簡體   English   中英

為什么這個簡單的MySQL語句不起作用?

[英]Why isn't this simple MySQL statement working?

我正在嘗試將用戶輸入的搜索詞與兩個表進行匹配:帖子和畫廊。 問題是union all子句不起作用。 我的代碼有問題嗎?

$query = mysql_query("

    SELECT * FROM posts WHERE title LIKE '%$searchTerm%'
        OR author LIKE '%$searchTerm%'
        OR location LIKE '%$searchTerm%'
        OR excerpt LIKE '%$searchTerm%'
        OR content LIKE '%$searchTerm%'

        UNION ALL

    SELECT * FROM galleries WHERE title LIKE '%$searchTerm%'

        ");

當對兩個查詢執行UNION ALL時,它要求您從兩個表中以相同的順序以相同的數據類型返回相同數量的列。 由於您正在執行SELECT * ,這意味着postsgalleries都具有完全相同數量的列,相同類型,相同順序的列。 我懷疑情況是否如此(但我想您會很幸運)。


編輯以添加示例說明如何進行此工作

您需要使列號/類型匹配,您可以使用這種方法來做到這一點(我猜測您需要哪些列,並為假定不添加的列添加“ N / A”存在於galleries ):

SELECT title, author, location, excerpt, content
FROM posts
WHERE title LIKE '%$searchTerm%'
    OR author LIKE '%$searchTerm%'
    OR location LIKE '%$searchTerm%'
    OR excerpt LIKE '%$searchTerm%'
    OR content LIKE '%$searchTerm%'

UNION ALL

SELECT title, 'N/A', 'N/A', 'N/A', 'N/A'
FROM galleries
WHERE title LIKE '%$searchTerm%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM