PHP搜索多个数据库

时间:2014-10-19 19:40:38

标签: php mysql search

我试图从两个不同的数据库表中获取搜索结果。

我收到错误,我不明白为什么,这是我第一次使用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

非常感谢

1 个答案:

答案 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