我目前有一个值数组(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)
使用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)
归档时间: |
|
查看次数: |
18280 次 |
最近记录: |