我正在使用PHP / MySQL中的搜索功能。代码工作正常,除了一个问题:AND语句根本不起作用。我在网站的另一个页面上使用相同的内容,我只显示相同的内容,并且它完美地运行。在搜索中使用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吗?
答案 0 :(得分:2)
试试这个;)
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."%'
时,这些条件中的任何一个匹配,下一个条件不会被计算出来。