0

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."')
4

1 に答える 1