【发布时间】:2011-05-28 13:17:45
【问题描述】:
我正在使用此查询返回搜索结果
$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 行)。
无论我为activated 或banned 输入什么,单击空白搜索总是返回所有用户。
关键是如果我在命令行上运行这个 SQL 并手动输入
user_id NOT LIKE '5'
AND activated = 1
AND banned = 0
它会正确过滤结果。
有谁知道我做错了什么?感谢您的帮助!
【问题讨论】:
标签: php mysql codeigniter activerecord