我使用PHP和需要做一堆在同一個表和列的SELECT語句,並得到匹配值的行。創建SQL查詢,以一個數組
我有我在數組中搜索上,現在我只是循環,並分別對每一個做一個select語句的所有值。我怎麼能把這一切都放到一個選擇陳述中,並拋棄循環?
現在是這樣的:
for (yaddah yaddah yahhah){
SELECT * FROM scan WHERE order=var[$i];
}
我使用PHP和需要做一堆在同一個表和列的SELECT語句,並得到匹配值的行。創建SQL查詢,以一個數組
我有我在數組中搜索上,現在我只是循環,並分別對每一個做一個select語句的所有值。我怎麼能把這一切都放到一個選擇陳述中,並拋棄循環?
現在是這樣的:
for (yaddah yaddah yahhah){
SELECT * FROM scan WHERE order=var[$i];
}
你可以使用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腳本中,它只是一個獲取多行而不是僅一行的問題。
謝謝,這比創建臨時表要簡單得多,就像我在別處告訴過的那樣。 – 2010-03-04 22:06:38
不客氣:-)是的,確實很容易^^ – 2010-03-04 23:05:20
退房SQL的In Operator
使用IN
和implode
如下:
$sql = "SELECT * FROM `scan` WHERE `order` IN (" . implode(',', $array) . ")";
幾乎只需30分鐘之前公佈的一樣http://stackoverflow.com/questions/2382831/select-from-mysql-table-where-fieldarray。 – 2010-03-04 22:02:42
對不起。我看了看,但沒有看到那一個。 – 2010-03-04 22:38:27