将数组传递给mysql

Iva*_*vak 0 php mysql

我目前有一个值数组(business_id的)

让我们说吧

Array
(
[0] => 12
[1] => 14
[2] => 15
)
Run Code Online (Sandbox Code Playgroud)

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

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

$q = "select * from business where business_id = 12";
$rs = mysql_query($q);
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 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)
Run Code Online (Sandbox Code Playgroud)

通常的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')
Run Code Online (Sandbox Code Playgroud)


cle*_*tus 7

使用SQL IN操作:

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

注意:如果值来自客户端,则应使用mysql_real_escape_string()或清除它们,因为这些是数字,您可以使用intval().例如:

$ids = array_map('intval', $values);
$sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $ids) . ')';
$rs = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)