我在尝试使用 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()
就我而言,SQLite 中也允许使用“field IN array”语句,所以我真的不知道为什么这不起作用。有谁知道如何使这项工作?
提前致谢!
问候,Skyfe。
编辑:尝试以下列方式设置条件,但没有得到错误,但也没有任何结果:
$this->browse_model->conditions['username'] = "IN (SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')";
所以我想这仍然不是正确的方法..
EDIT2:“修复”它,不知何故它没有重复字段 => value 为 IN 语句正确注释 where 子句的方式,因此在自定义字符串中定义它:
$this->browse_model->custom_condition = username IN (SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')