2010-03-04 110 views
0

我使用PHP和需要做一堆在同一個表和列的SELECT語句,並得到匹配值的行。創建SQL查詢,以一個數組

我有我在數組中搜索上,現在我只是循環,並分別對每一個做一個select語句的所有值。我怎麼能把這一切都放到一個選擇陳述中,並拋棄循環?

現在是這樣的:

for (yaddah yaddah yahhah){ 
    SELECT * FROM scan WHERE order=var[$i]; 
} 
+0

幾乎只需30分鐘之前公佈的一樣http://stackoverflow.com/questions/2382831/select-from-mysql-table-where-fieldarray。 – 2010-03-04 22:02:42

+0

對不起。我看了看,但沒有看到那一個。 – 2010-03-04 22:38:27

回答

3

你可以使用IN指定值的列表:

select * 
from scan 
whenre order IN (1, 5, 46, 78) 


,你可以得到這樣的使用implode函數的列表:

$array = array(1, 5, 46, 78); 
$list_str = implode(', ', $array); 
// $list_str is now "1, 5, 46, 78" 

$query = "select * 
from scan 
where order IN ($list_str) 
"; 

之後,在您的PHP腳本中,它只是一個獲取多行而不是僅一行的問題。

+0

謝謝,這比創建臨時表要簡單得多,就像我在別處告訴過的那樣。 – 2010-03-04 22:06:38

+0

不客氣:-)是的,確實很容易^^ – 2010-03-04 23:05:20

1

使用INimplode如下:

$sql = "SELECT * FROM `scan` WHERE `order` IN (" . implode(',', $array) . ")";