2009-08-31 69 views
1

我公司目前拥有价值(business_id的)数组传递一个数组到MySQL

可以说,它的

Array 
(
[0] => 12 
[1] => 14 
[2] => 15 
) 

什么是使用这些值来获得对相关行信息的最佳方式来自数据库的每个business_id。

它可以是一个一个查询是我的问题。很显然,你可以做

$q = "select * from business where business_id = 12"; 
$rs = mysql_query($q); 

回答

11
$ids = array(1, 2, 3, 4); 

$ids = join(', ', $ids); 
$query = "SELECT * FROM business WHERE business_id IN ($ids)"; 
// $query => SELECT * FROM business WHERE business_id IN (1, 2, 3, 4) 

常用的SQL注入警告仍然适用,你可能要遍历IDS首先要验证或转义。此外,如果您期望字符串而不是数字,请使用:

$ids = array('a', 'b', 'c', 'd'); 

$ids = join("', '", $ids); 
$query = "SELECT * FROM business WHERE business_id IN ('$ids')"; 
// $query => SELECT * FROM business WHERE business_id IN ('a', 'b', 'c', 'd') 
7

使用SQL操作中:

$sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $values) . ')'; 
$rs = mysql_query($sql); 

注:如果值来自他们应该被消毒的客户端,无论是与mysql_real_escape_string()或者,因为这些数字,你可以使用intval()。例如:

$ids = array_map('intval', $values); 
$sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $ids) . ')'; 
$rs = mysql_query($sql); 
3

您可以使用逗号作为分隔符来加入数组,并使用SQL IN语句。

$businessIds = join(",", $array); 
$q = "select * from business where business_id IN ($businessIds)"; 
$rs = mysql_query($q);