【发布时间】:2013-04-19 11:12:22
【问题描述】:
我在尝试使用 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);
但不知何故,当我使用上面写的条件时,它给了我以下错误:
致命错误:在非对象上调用成员函数 execute() ../www/system/database/drivers/pdo/pdo_driver.php 在第 193 行
就我而言,SQLite 中也允许使用“field IN array”语句,所以我真的不知道为什么这不起作用。有谁知道如何进行这项工作?
提前致谢!
您好, Skyfe。
编辑:尝试按以下方式设置条件并没有收到错误,但也没有任何结果:
$this->browse_model->conditions['username'] = "IN (SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')";
所以我想这仍然不是正确的方法..
EDIT2: 'Fixed' 它,不知何故它没有重复字段 => value 为 IN 语句正确标注 where 子句的方式,因此在自定义字符串中定义它:
$this->browse_model->custom_condition = username IN (SELECT like_to FROM likes WHERE like_from = '".$this->user->username."')
【问题讨论】:
-
请确保,数据库加载器之前加载过?
-
是的,数据库已加载,所有其他查询都可以工作,只是不是我在帖子中提到的设置条件 WHERE username IN array 的那个。但是我只是尝试将 IN 语句放在值内,它没有给出错误,但都没有返回任何结果(它应该)......所以仍然很困惑
-
打印最后一个查询,它是如何形成的 {echo $this->db->last_query();退出;}
-
刚做了,输出:SELECT * FROM users WHERE gender = 'f' AND gender_preference = 'm' AND username = 'IN (SELECT like_to FROM likes WHERE like_from = ''testtest'')'
-
以不同的方式修复它,创建一个以普通字符串格式而不是数组设置的自定义覆盖查询
标签: database sqlite codeigniter pdo where