2011-09-25 10 views
7

私はカスタム文字列を使っていくつかの値を選択しようとしています。以下の私のコードは

$this->db->from('posted'); 
    $st="infor='rent' AND (typeq='in' OR typeq='out')"; 
    $this->db->where($st); 
    $q = $this->db->get(); 

あるデータベースエラーは、私はそれが完璧に動作します。このコードを実行してmanualy時に問題が

WHERE `infor='rent'` 

のだってあると思い

Error Number: 1054 

Unknown column ‘infor=‘rent’’ in ‘where clause’ 
SELECT * FROM (`posted_ads`) WHERE `infor=‘rent’` AND (typeq=‘in’ 
OR typeq=‘out’) 
Filename: C:\wamp\www\parklot\system\database\DB_driver.php 
Line Number: 330 

を発生しました。

WHERE infor='rent' 

そのが自動的

答えて

19

where()に三番目のパラメータを追加し、FALSE

$this->db->from('posted'); 
    $st="infor='rent' AND (typeq='in' OR typeq='out')"; 
    $this->db->where($st, NULL, FALSE); 
    $q = $this->db->get(); 

$this->db->where()に設定追加したので、どのように私は

`` 

を取り除きますかaccepオプションの第3パラメータです。 FALSEに設定すると、CodeIgniterはフィールドまたはテーブル名をバックティックで保護しようとしません。

CodeIgniter Documentation

+0

あなたは、多くの場合、同様のことを行う場合は、テーブル名とフィールドの周りに目盛りを追加する関数を作成するのに便利 - または 'DB-呼び出す単純なラッパー関数を書く> WHERE'適切ティックと(もちろん、 'false'の第3のパラメータで)。 – uzsolt

+0

これはここの文書にはないのは残念です。 http://ellislab.com/codeigniter/user-guide/database/active_record.html – Tyguy7

+1

@ user1253085それはそこにあります。あなたは見逃しているに違いない。 –