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()

就我而言,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."')
4

1 回答 1

0

他们是格式化 IN 子句的一些问题,

SELECT * FROM users WHERE gender = 'f' AND gender_preference = 'm' AND username IN (SELECT like_to FROM likes WHERE like_from = 'testtest') 
于 2013-04-19T11:38:13.567 回答