2010-03-04 100 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) . ")";