基于数组的SQL查询[重复]

Posted

技术标签:

【中文标题】基于数组的SQL查询[重复]【英文标题】:SQL query based on array [duplicate] 【发布时间】:2013-04-19 20:19:38 【问题描述】:

我有一个名为 $restaurantArray 的数组,其中包含一系列餐厅 ID。

我是否可以执行一个 mysql 查询,如果它们的 id 等于数组中的这些餐厅 ID 之一,它将返回行?

谢谢。

【问题讨论】:

你有没有尝试过?如果是这样,请说明这一点,以及您与数据库的交互方式。 这可能有用:***.com/a/11181663/1208233 【参考方案1】:

您可以在 mysql 查询中使用 IN。 只需将数组 $restaurantArray 内爆到字符串中,使用逗号作为分隔符;用括号覆盖这个字符串;并使用结果字符串作为查询的输入。 类似的东西

// uncomment if data needs to be sanitized
// $restaurantArray = array_map("mysql_real_escape_string", $restaurantArray);
$input = '(' . implode(',', $restaurantArray) . ')';
$query = "SELECT from foo WHERE id IN $input";

【讨论】:

易受注入攻击.. 如果数组直接来自数据库,如何容易受到此类攻击! 在 DB 查询之前使用这个 sn-p。 foreach($restaurantArray as $key=>$value) $restaurantArray[$key] = mysql_real_escape_string($value); 你永远不能假设这些事情。一切都必须逃脱。期间。 你会使用 $query = "SELECT from foo WHERE id IN $input ORDER BY RAND() LIMIT 3";

以上是关于基于数组的SQL查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将php数组传递给sql查询[重复]

SQL查询返回从数组中选择作者的数据[重复]

基于Java中用户输入的SQL查询[重复]

如何更改基于 PHP 数组的 SQL 查询?

sql中对json数据字段的查询?

解析 SQL Server 查询而不针对数据库连接执行查询 [重复]