php - MySQL Codeigniter - $this->db->query 和 CLI 结果不匹配

标签 php mysql codeigniter activerecord

我正在使用这个查询返回搜索结果

    $id = $this->auth->get_user_id();

    $query = $this->db->query("
    SELECT user_id,
           facebook_id,
           first_name,
           last_name,
           country,
           state,
           city,
           picture,
           cars_id,
           cars_name,
           cars_picture
    FROM   user_profiles
           JOIN users
             ON users.id = user_id
           JOIN cars
             ON cars.id_fk = user_id
    WHERE  user_id NOT LIKE '$id'
           AND activated = 1
           AND banned = 0
           AND first_name LIKE '%$search_term%'
            OR last_name LIKE '%$search_term%'
            OR Concat(first_name, ' ', last_name) LIKE
               '%$search_term%'            
    ORDER BY last_name ASC; 
    ");

如果我点击一个空的搜索框,它会返回所有用户,如果我输入名字或姓氏,它只会返回该特定用户作为搜索结果。使用命令行,此查询在手动输入(或留空)$id$first_name 等时给出类似的结果。

但是,这是奇怪的行为:以下几行似乎对查询没有影响:

user_id NOT LIKE '$id' //line 1
  AND activated = 1
  AND banned = 0

例如,我无法从搜索结果中排除当前用户(第 1 行)。 无论我为 activatedbanned 输入什么,点击空白搜索总是返回所有用户

问题在于,如果我在命令行上运行此 SQL 并手动输入

user_id NOT LIKE '5'
   AND activated = 1
   AND banned = 0

它正确地过滤了结果。

有谁知道我做错了什么?感谢您的帮助!

最佳答案

我认为 OR 与最后一个 AND 没有关系。试试这个:

AND (first_name LIKE '%$search_term%'
        OR last_name LIKE '%$search_term%'
        OR Concat(first_name, ' ', last_name) LIKE
           '%$search_term%' )     

关于php - MySQL Codeigniter - $this->db->query 和 CLI 结果不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161877/

相关文章:

mysql - 如何将大型数据集导入 mysql - 正确的方法?

forms - 使用 Get 参数时如何验证 Codeigniter 中的表单字段?

php - Codeigniter/PHP 检查是否可以连接到数据库

php - 限制 codeigniter 中的 url_suffix

php - 使用字符集 utf-8 时出错

php - 变量转储不显示

php - cURL SSL PUT/POST (php) 的延迟响应(NSS 与 OpenSSL)

PHP mysqli 返回错误的列

php - 每天自动更新数据库

php - 缩短特定字符串的函数