我目前有一系列值(business_id's)
让我们说
Array
(
[0] => 12
[1] => 14
[2] => 15
)
使用这些值中的每一个从数据库中获取每个business_id的关联行信息的最佳方法是什么。
可以是一对一的查询是我的问题。显然,你可以做到
$q = "select * from business where business_id = 12";
$rs = mysql_query($q);
答案 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);