SQLite を使用して CodeIgniter で 'WHERE field IN ...' 句を設定しようとすると、問題が発生します。$conditions と呼ばれるすべての where 句条件の配列を取得し、次のように WHERE IN 句を追加しました。
$this->browse_model->conditions['username IN'] = "(SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')";
そして、browse_model 内で、次のコードを使用してクエリを実行します。
$get = $this->db->get_where('users', $this->conditions, 6, $_SESSION['browse_page']*6);
しかし、どういうわけか、上で書いた条件を使用すると、次のエラーが発生します。
致命的なエラー: 193 行目の ../www/system/database/drivers/pdo/pdo_driver.php の非オブジェクトに対するメンバー関数 execute() の呼び出し
私に関する限り、'field IN array' ステートメントは SQLite でも許可されているため、なぜこれが機能しないのか本当にわかりません。これを機能させる方法を知っている人はいますか?
前もって感謝します!
ごきげんよう、スカイフ。
編集:次の方法で条件を設定しようとしましたが、エラーは発生しませんでしたが、結果も得られませんでした:
$this->browse_model->conditions['username'] = "IN (SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')";
ですから、それはまだ正しい方法ではないと思います..
EDIT2:それを「修正」しました。どういうわけか、INステートメントのwhere句を正しく表記するフィールド=>値の方法を解釈しなかったため、カスタム文字列で定義しました:
$this->browse_model->custom_condition = username IN (SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')