2011-04-05 118 views
1

這是我的MySQL查詢:這個mysql查詢有什麼問題?

SELECT * 
FROM wp_bp_group_documents 
WHERE group_id = 4 
    AND id IN (2) 
    AND (file LIKE '%jpg' 
     OR file LIKE '%png' 
     OR file LIKE '%jpeg' 
     OR file LIKE '%gif')  
ORDER BY created_ts DESC LIMIT 0, 20 

,這是我的表結構:

'id', 'user_id', 'group_id', 'created_ts', 'modified_ts', 'file', 'name', 'description', 'featured', 'download_count' 
'1', '1', '1', '1301587327', '1301587327', '1301587327-NewApplicationForm.pdf', 'Tenancy application form', 'This is a tenancy application form. Please download and fill in.', '0', '0' 
'2', '1', '4', '1301934439', '1302005432', '1301934439-bupa_large.png', 'BUPA Stand Image', 'asd', '0', '0' 

所以從這個查詢我希望它在數據庫中找到第二個記錄,但它沒有返回值。

沒有mysql錯誤。我只是想知道我是否已經完成了查詢?

謝謝

回答

4

file是一個MySQL關鍵字。嘗試將file名稱反向引用:`file`。

+0

啊哈...似乎工作。很簡單,一旦你知道如何! :p謝謝 – 2011-04-05 13:20:48

+0

始終對數據庫查詢進行錯誤檢查。即使「正確」的查詢語句也會失敗。在這種情況下,你會從mysql獲得語法錯誤。 – 2011-04-05 13:23:34

+0

以及我使用mysql_error() - 但只有當查詢失敗。例如:'$ result = mysql_query($ sql)或者死(mysql_error());'這可能是我沒有得到任何東西的原因。 – 2011-04-05 13:28:43

1

您的id列看起來像是一個字符串,但是您在數組中指定了一個整數。這可能是問題嗎?

+0

啊,謝謝,但沒有 - 多數民衆贊成在他們的方式,我從mysql數據庫複製它...:p – 2011-04-05 13:15:45

0

稍微偏了OP的話題,但你知道(是嗎?),當你包括「喜歡」在任何選擇,那麼MySQL別無選擇,只能通過整個表閱讀。爲了避免這種情況,一些人試圖確保像文件類型這樣的值 - 根據定義,它們已經有了自己的分類標準 - 被分解爲非唯一索引。

如果您決定這麼做,您的表格會突然變得不規範。爲了補救,該表需要另一列,比如`pictype`,你需要索引。對我來說,無論如何,這是一個更強大的桌子設計,但它只是MHO。