2011-08-10 10 views
0

$params['title']は文字列で、$params['feed']は整数です。列の「タイトル」タイプはvarcharで、列の「フィード」タイプはintegerです。 PHPコードは次のとおりです。エラーが発生した原因アクティブレコードクラスのwhere句の問題

$this->db->where('title', $params['title']); 
$this->db->where('feed', $params['feed']); 
$query = $this->db->get('news'); 

だから、すべてがうまくなり、もちろん...

A Database Error Occurred 
Error Number: 1064 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'riots: intense anger after deaths of three young men AND `feed` = '1'' at line 3 
SELECT * FROM (`news`) WHERE `title` = Birmingham riots: intense anger after deaths of three young men AND `feed` = '1' 
Filename: C:\path\system\database\DB_driver.php 
Line Number: 330 

必要があり、それは明らかです。それを修正する方法はありますか(アクティブレコードクラスを使用しない点を除けば)? CIの文書を参照しましたが、なぜこの問題が発生したのかはわかりません。

EDIT従って

$this->db->where('title', (string) $params['title']); 

そして、他の条項に変更することによって解決

。そして今、他のモデルでも同じエラーが発生します。さて、唯一の解決策は、手動でどこでもvar型を追加することだと思います。

+0

ここで、あなたは '$ params ['title']'とあなたが実行しているcodeigniterのバージョンを割り当てていますか? – jondavidjohn

+0

最初に値は他のモデルで割り当てられます $ data ['title'] = $ item-> title; オブジェクト$ itemはSimpleXMLクラスによって作成されます。そして配列$ dataは、モデルのメソッド(エラーが発生している場所)の引数として渡されます。 CIバージョンは最新の2.0.2です。 – Gediminas

+0

このSimpleXMLクラスの 'title'プロパティは文字列ではありません。 – jondavidjohn

答えて

0

SimpleXMLクラスのtitleプロパティは文字列ではないようです。

挿入するまで待つのではなく、すぐに文字列にキャストすることができます。

data['title'] = (string) $item->title;