【问题标题】:CodeIgniter SQLite where field IN array conditionCodeIgniter SQLite where field IN 数组条件
【发布时间】: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


【解决方案1】:

他们的 IN 子句格式有些问题,

SELECT * FROM users WHERE gender = 'f' AND gender_preference = 'm' AND username IN (SELECT like_to FROM likes WHERE like_from = 'testtest') 

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2012-09-25
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多