我有以下字符串...對MySQL的預備逗號分隔的字符串凡在
1,2,3,4,5,6
我想有這個喜歡
「1 」, '2', '3', '4', '5', '6'
在MySQL中的使用WHERE IN()
會有人知道做到這一點的最好方法是什麼?
謝謝!
我有以下字符串...對MySQL的預備逗號分隔的字符串凡在
1,2,3,4,5,6
我想有這個喜歡
「1 」, '2', '3', '4', '5', '6'
在MySQL中的使用WHERE IN()
會有人知道做到這一點的最好方法是什麼?
謝謝!
$str = "1,2,3,4,5,6";
echo "'" . implode("','", explode(',', $str)) . "'";
//output: '1','2','3','4','5','6'
如果您不使用參數化查詢:如果您將項目作爲字符串文字傳遞,則應該像這樣對待它們。你要麼知道輸入字符串只包含數字,在這種情況下,OMG Ponies的批評就適用,或者你不知道字符串包含什麼,你必須用適當的轉義函數處理每個單個項目。 – VolkerK 2010-08-31 05:45:35
@VolkerK,我同意。在這裏,我剛剛提供了嚴格的解決方案,將問題的其他'MySQL'實現留給用戶。 – shamittomar 2010-08-31 05:59:30
您可以用引號explode
你的字符串到一個數組,然後join
(或implode
,它的別名!)它:
$str = '1,2,3,4,5,6';
$arr = explode(",", $str); // turns your string into array(1, 2, 3, 4, 5, 6);
$joined_arr = join("', '", $arr); // becomes 1', '2', '3', '4', '5', '6
$query = "... WHERE ... IN ('$joined_arr')"; // note the two missing quotes have been added in
WHERE (SUBSTRING(SUBSTRING_INDEX(cocodes,cash_out_code,-1),1,1)=','OR...
其實際上是字符串函數的組合..只是試着在那個方向
沒有必要將值封裝在單引號中。 MySQL會根據列數據類型將INTegers隱式轉換爲VARCHAR,反之亦然。如果數據類型爲INT,那麼不應該用單引號包裝... – 2010-08-31 05:00:27
但是這個說法也可以用其他方式運行,比如「如果您通過腳本,您不必對腳本中的類型做出假設參數作爲字符串; MySQL將隱式轉換類型適用「 – VolkerK 2010-08-31 05:41:39