2014-10-19 111 views
-1

我想從兩個不同的數據庫表中獲得搜索結果。PHP搜索多個數據庫

我得到的錯誤,我不知道爲什麼,這是我第一次使用UNION所以我不確定syntax是否正確,任何幫助將不勝感激。

$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."%')") 

最初的錯誤是解析錯誤:語法錯誤,意想不到的T_IF上線98個

非常感謝

+0

你得到的錯誤是什麼? – 2014-10-19 19:43:00

+0

這兩個表的列數是否相同?對於聯合,兩個查詢都必須返回相同數量的列。 – mrmryb 2014-10-19 19:43:40

+0

對不起,這裏是錯誤,解析錯誤:語法錯誤,第98行的意外T_IF – Swashpro 2014-10-19 19:45:11

回答

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列加入比你可以創建Photos第三列:

SELECT `col1b`,`col2b`,null FROM Photos WHERE 
(`photo_alt` LIKE '%".$query."%')") 

重要提示:停止使用mysql。它已被廢棄,並且您使用它的方式特別危險,並且對sql injection開放。使用PDO

+0

確定這就是你的建議十分感謝,我會放棄這一點。謝謝 – Swashpro 2014-10-19 20:00:27

+0

太棒了,讓我們知道它是怎麼回事,如果這解決了你的問題,請接受它作爲正確的答案。 – mrmryb 2014-10-19 20:18:35

+0

工作完美,現在從兩個表中獲得結果。此外,我還會看看PDO,這對我來說都是新鮮事物,我已經嚴格執行了3年的前端開發,這是一個完整的其他球類遊戲。再次感謝 – Swashpro 2014-10-19 20:28:28