2011-09-08 64 views
1

我具有不同的ID的陣列,我想要遍歷這個數組,並使用這些ID來與數據庫表的單個字段進行比較在MySQL比較單個字段多個值

classid{ 
0=>1, 
1=>2 
} 

,我有表作爲

id name 
1 myname 
2 ur name 
3 everyonename 

現在,我怎麼能檢索值兩個ID = 1和ID = 2,在短短一個選擇查詢?

回答

3

你想查詢的是:

SELECT * FROM table WHERE id IN (1,2) 

從PHP創建此,你會使用類似

$classid = array(1, 2); 
$sql = sprintf('SELECT * FROM table WHERE id IN (%s)', 
       implode(',', $classid)); 

你應該超小心,防止SQL注入如果在值$classid來自外部來源!通常這是通過準備語句和綁定參數來實現的,但在這種情況下(您想使用IN的地方),這是不可能的。

因此,你應該自己清理的值,使用類似

// This will convert all the values in the array to integers, 
// which is more than enough to prevent SQL injections. 
$classid = array_map('intval', $classid); 

瞭解更多關於protecting yourself from SQL injection

+0

非常非常感謝所有細節@Jon –