将数组传递给mysql

时间:2009-08-31 05:59:20

标签: php mysql

我目前有一系列值(business_id's)

让我们说

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

使用这些值中的每一个从数据库中获取每个business_id的关联行信息的最佳方法是什么。

可以是一对一的查询是我的问题。显然,你可以做到

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

3 个答案:

答案 0 :(得分: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注入警告仍然适用,您可能希望首先遍历ID以验证或转义它们。此外,如果您希望使用字符串而不是数字,请使用:

$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')

答案 1 :(得分:7)

使用SQL IN操作:

$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);

答案 2 :(得分:3)

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

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