2013-05-11 78 views
-3

好吧,所以我有一個搜索代碼,看起來兩個表。我知道這個含糊不清來自於這兩個表中有一列「標題」(名爲盤軌道的表)。mysql模糊列標題

現在我的修復是這樣的。

$query="SELECT * FROM disc, track WHERE Artist LIKE '%$trimmed%' OR disc.Title LIKE 

'%$trimmed%' OR Year LIKE '%$trimmed%' OR Genre LIKE '%$trimmed%' LIMIT 0, 30"; 

Notice: Undefined index: disc.Title in C:\xampp\htdocs\search.php on line 61 

我一直在尋找無處不在,無論我走到哪裏都說那代碼是正確的。但每當我跑過搜索它說disc.Title不存在(當我只搜索其中一個表,它可以找到標題)

任何想法?

+0

一個想法是你可能需要重複LIKE語句。你能否包括具體的錯誤? – 2013-05-11 23:33:21

+2

您的SQL服務器可能配置爲使用區分大小寫的列名稱。 – Rob 2013-05-11 23:37:20

+0

藝術家如何跟蹤? – Strawberry 2013-05-11 23:37:40

回答

0
SELECT d.*, t.* FROM disc d, track t WHERE t.Artist LIKE '%$trimmed%' OR d.Title LIKE '%$trimmed%' OR Year LIKE '%$trimmed%' OR t.Genre LIKE '%$trimmed%' LIMIT 0, 30 

您應該爲所有連接和選擇項目使用表格信息/前綴。

+0

只是給了我更多的錯誤。表前綴不起作用。 – user2373944 2013-05-11 23:47:51

2

運行$query="SELECT * FROM disc, track WHERE Artist LIKE '%$trimmed%'"它工作嗎?

這是OR disc.Title在那扔掉你。

您需要填寫disk.Title表達式。 OR disc.Title LIKE '%$trimmed%'

就運行SQL而言,您應該明確編寫您的連接。

SELECT * 
FROM disc 
INNER JOIN track 
    ON disk.id = track.disk_id 
WHERE (
    [disk or track?].Artist LIKE '%$trimmed%' 
    OR disc.Title LIKE '%$trimmed%' 
) 
+0

沒有標題的查詢工作。在我的問題中更新了全部內容。我不明白你的代碼中的INNER JOIN,但是我實現了它,它不起作用。 – user2373944 2013-05-11 23:49:17

+0

運行'DESCRIBE磁盤;'並粘貼輸出。請參閱:http://dev.mysql.com/doc/refman/5.0/en/explain.html – 2013-05-13 13:58:26