我正在研究 PHP/MySQL 中的搜索功能。除了一个问题外,代码工作正常:AND 语句根本不起作用。我在网站的另一个页面上使用了相同的内容,在那里我只显示了相同的内容,并且效果很好。当我在搜索中使用 AND 语句时,如何让它起作用?
查询如下:
"SELECT l.Id, l.ImageId, l.Subject, l.Level, l.Aim, i.NameImg, i.AltImg
FROM LessonPlans l
JOIN Images i
ON i.ImageId=l.ImageId
WHERE lower(Subject) LIKE '%".$search."%' OR lower(Level) LIKE '%".$search."%' OR lower(Aim) LIKE '%".$search."%'
AND l.Language='English'
ORDER BY l.Id DESC;"
所以这里的问题是根本没有考虑l.Language='English'
。搜索时,我还得到了只有在 l.Language='Deutsch'
或 l.Language='French'
时才会出现的结果。不能在搜索查询中使用 AND 吗?
最佳答案
试试这个;)
SELECT l.Id, l.ImageId, l.Subject, l.Level, l.Aim, i.NameImg, i.AltImg
FROM LessonPlans l
JOIN Images i
ON i.ImageId=l.ImageId
WHERE (lower(Subject) LIKE '%".$search."%' OR lower(Level) LIKE '%".$search."%' OR lower(Aim) LIKE '%".$search."%')
AND l.Language='English'
ORDER BY l.Id DESC;
如果在where
子句中不加()
,则表示当lower(Subject) LIKE '%".$search."%'
, lower(Level) LIKE '%".$search."%'
, lower(Aim) LIKE '%".$search."%'
,其中任何条件匹配,则不会计算下一个条件。
关于php - mySQL 查询,并且未考虑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37205687/