我有一個包含一些記錄和列的數據庫:「type」,「id」等。我想選擇數組$ typearray中提到的任何「類型」的所有記錄,但沒有記錄哪些id在$ idarray中。我試着這樣做:查詢PHP MySQL多個條件
$result = mysql_query("SELECT * FROM db
WHERE type IN('".implode("','",$typearray)."')
AND id NOT IN('".implode("','",$idarray)."')
ORDER BY date DESC LIMIT 10");
但它似乎並沒有工作 - :
type IN('".implode("','",$typearray)."')
條件工作正常,但第二次卻沒有。起初,我認爲問題是與列類型 - 兩個數組包含字符串,「類型」列是一個VARCHAR(10)和ID是INT,但將其更改爲字符串沒有幫助。我究竟做錯了什麼?
編輯:
如果我打印查詢我得到這個:
SELECT * FROM db
WHERE type IN('apple','tomato','potato')
AND id NOT IN('20','1','10','15','8')
ORDER BY date DESC LIMIT 10
第一個條件正常工作:它僅選擇蘋果,西紅柿和土豆。第二個條件什麼也不做,即使我手動鍵入:
id NOT IN('20','1','10','15','8')
或
id NOT IN('20,1,10,15,8')
或
id NOT IN(20,1,10,15,8)
仍然失敗。
EDIT2:
其實忘記它。我是個白癡。我已經混合了我的變量...
在執行它之前只是'var_dump'查詢。那麼你可以看到出了什麼問題。 :) – mithunsatheesh 2014-09-22 13:17:08
給查詢如何形成? – Tushar 2014-09-22 13:19:00
MySQL並不關心你是否將整數放入引號或不是。是'$ idarray'真的是一個數組?在'$ result'行之前,把'assert(is_array($ typearray));斷言(is_array($ idarray));'。 – DanFromGermany 2014-09-22 13:22:18