我使用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