2

codeigniter アクティブ レコードを使用して単純な mysql クエリを実行し、過去 1 時間のデータを選択しています。

私のクエリは次のとおりです。

SELECT * FROM tablename WHERE added_datetime >= DATE_SUB(NOW(),INTERVAL 1 HOUR)

そして、このクエリを形成する私の codeigniter コードは次のとおりです。

$data=array(
            'added_datetime >='=>'DATE_SUB(NOW(),INTERVAL 1 HOUR)',

            );
            $query=$this->db->get_where('tablename',$data);

問題は、codeigniter が DATE_SUB 関数の周りに一重引用符を追加することです。これにより、mysql サーバーでクエリが機能しません。

codeigniter は以下を生成します:

SELECT * FROM (`tablename`) WHERE `added_datetime` >= 'DATE_SUB(NOW(),INTERVAL 1 HOUR)'

FALSE私も3番目のパラメーターとして追加してみましたget_whereが、まだ機能しません

$query=$this->db->get_where('tablename',$data,FALSE);

また、上記と同じクエリも生成されました。ですから、この問題を解決する方法を教えてください。

-ありがとう

4

1 に答える 1

9

代わりに次のようなことを試してください。

$this->db->where("added_datetime >= DATE_SUB(NOW(),INTERVAL 1 HOUR)", NULL, FALSE);
$query = $this->db->get('tablename');

$this->db->get_where();where句をエスケープ解除する機能は提供していません。

于 2012-04-16T07:12:38.540 に答える