两次搜索都会带回正确的结果,但是当我尝试将两个查询结合起来时,最终会产生不良结果。
$query3 = "SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code &&
airport_countries.name like '%$search%'
ORDER BY pageviews DESC";
$query2 = "SELECT *
FROM airports
WHERE name like '%$search%' or
municipality like '%$search%'
ORDER BY pageviews DESC";
VVVVVVVVV
SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code &&
airport_countries.name like '%$search%' or
airports.name like '%$search%' or
airports. municipality like '%$search%'
ORDER BY pageviews DESC
我做错了什么?
答案 0 :(得分:4)
你的问题似乎是operator precedence。要避免这种情况,只需使用大括号:
SELECT *
FROM airport_countries, airports
WHERE airports.iso_country=airport_countries.code
AND (
airport_countries.name LIKE '%$search%'
OR airports.name LIKE '%$search%'
OR airports. municipality LIKE '%$search%'
)
ORDER BY pageviews DESC
我还建议使用AND
代替&&
(您正在撰写or
代替||
- 看起来不是很明显一致),但这只是我的意见,为了更好的可读性,不应该造成任何差异。