2011-10-26 7 views

答えて

12

アクティブR ecordsが自動的にクエリをエスケープするので、CURDATE()はmysql関数を使用する代わりに文字列として渡されます。 それでもARを使用したい場合は、

$query = $this->db->query("SELECT id,name FROM store WHERE dr = '1' AND end >= CURDATE()"); 

またはのように、手動でクエリをruningて何かをしたほうが良いと思い、あなたはCIによってエスケープ自動回避するために、第三のパラメータ$this->db->whereとしてFALSEを渡すことができます。

$this->db->select('id,name') 
     ->where('dr','1') 
     ->where('end >=', 'CURDATE()', FALSE); 
$query = $this->db->get('store'); 
+0

タイムスタンプタイプの場合は、 – user782104

+0

を追加すると「FALSE」がキーになります。ありがとう@DamienPirsy –

3

私はCIアクティブレコードを使用していないが、endは、タイムスタンプフィールドが試すの場合WHERE end >= CURDATE()

とは対照的に、それはWHERE end >= 'CURDATE()'をやっているので、私はCURDATE()は、クエリ内の文字列に置かれていることを推測します...

$this->db->where('end >=', time()); 

endは、日時フィールドが試すの場合...

$this->db->where('end >=', date("Y-m-d H:i:s")); 
関連する問題