1

两个搜索都返回了正确的结果,但是当我尝试组合这两个查询时,它最终给出了错误的结果。

$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

我究竟做错了什么?

4

1 回答 1

4

您的问题似乎是运算符优先级。为避免这种情况,只需使用大括号:

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而不是||- 看起来不太一致),但这只是我的意见,以提高可读性,不应该造成任何差异。

于 2012-03-30T09:03:25.917 回答