我有一個這樣的查詢與IN子句PHP數組MySQL查詢
SQL = 「
某些查詢 WHERE some_item IN()
」;
我必須做一個for循環來把php數組的所有項放到IN子句中,還是有一個函數或方法來做到這一點?
我有一個這樣的查詢與IN子句PHP數組MySQL查詢
SQL = 「
某些查詢 WHERE some_item IN()
」;
我必須做一個for循環來把php數組的所有項放到IN子句中,還是有一個函數或方法來做到這一點?
你可以嘗試破滅
$item_ids = array(1, 2, 3, 4, 5); // somehow populate this array
$item_list = implode(',', $item_ids);
$sql = "SOME QUERY WHERE some_item IN ({$item_list})";
http://php.net/manual/en/function.implode.php
這裏是一個簡單的例子:
$陣列=陣列( '姓', '郵件', '電話');
$ comma_separated = implode(「,」,$ array);
對於數組中的數值:
sprintf("... WHERE some_item IN (%s) ...",implode(",",$numeric_array));
對於字符串值:
sprintf("... WHERE some_item IN ('%s') ...",implode("','",$escaped_string_array));
要小心,以逃避當值構建陣列。
希望這會有所幫助!
你可以做一個array_filter()之前調用轉義方法等http://php.net/manual/en/function.array-filter.php – dogmatic69 2011-02-08 11:07:45
+1有用的評論,謝謝:) – aorcsik 2011-02-08 11:09:24
如果你有一個數組中的東西的列表,你可以使用JOIN來爲你構建它。這對於數字值來說是最簡單的,因爲你不需要引用任何事物。事情是這樣的:
$sql = 'SOME QUERY WHERE some_item IN (' . join(',', $a_myData) . ')';
如果陣列包含字符串,你應該爲你把數據放入數組逃脫數據。但一旦你做完了,你可以做類似於上面的事情,添加引號。
$sql = 'SOME QUERY WHERE some_item IN ("' . join('","', $a_myData) . '")';
一個潛在的問題是一個空數組,因爲上面的例子會給你IN ("")
,這有可能匹配你不想要的東西。
上面的例子也沒有考慮NULL值。一種解決方法是用引號已經在其周圍的字符串填充你的數組(因此你可以使用NULL
作爲它自己的值)。
注意:您可以[格式線爲代碼(http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-塊)通過縮進它們四個空格。編輯器工具欄中的「{}」按鈕可以爲您做到這一點。編輯你的問題並嘗試一下。單擊編輯器工具欄中的橙色問號以獲取更多信息和格式化提示。 – outis 2011-04-23 20:04:34