我试图从两个不同的数据库表中获取搜索结果。
我收到错误,我不明白为什么,这是我第一次使用UNION
ALL,所以我不确定syntax
是否正确,任何帮助都会受到赞赏。< / p>
$raw_results = mysql_query("SELECT * FROM Vectors WHERE
(`Name` LIKE '%".$query."%') OR
(`Tags` LIKE '%".$query."%') OR
(`Image` LIKE '%".$query."%')
UNION ALL SELECT * FROM Photos WHERE
(`photo_alt` LIKE '%".$query."%')")
初始错误是Parse错误:语法错误,第98行意外的T_IF
非常感谢
答案 0 :(得分:0)
你肯定需要能够解决问题,这样你就可以一次找出一个问题。
如果您使用xampp
或拥有服务器,则可以使用phpmyadmin
快速检查查询是否有效。
首先,您可能希望将查询拆分为分别测试每个select
,这样您就知道它们都在工作。之后,如果您仍有问题,则很可能是您的union
。
Unions
需要返回的列相等,因此如果第一个select
返回2列,则第二个列也必须返回2.
$raw_results = mysql_query("SELECT `col1a`,`col2a` FROM Vectors WHERE
(`Name` LIKE '%".$query."%') OR
(`Tags` LIKE '%".$query."%') OR
(`Image` LIKE '%".$query."%')
UNION ALL
SELECT `col1b`,`col2b` FROM Photos WHERE
(`photo_alt` LIKE '%".$query."%')")
如果Vectors
有3列且Photos
有2列,但您希望在此联接中选择Vectors
中的所有3列,则可以为{{1}创建第3列}}:
Photos
重要提示:停止使用mysql。它已被弃用,您使用它的方式特别危险并且对SELECT `col1b`,`col2b`,null FROM Photos WHERE
(`photo_alt` LIKE '%".$query."%')")
开放。使用sql injection
。