MySQL PHP - SELECT WHERE id = array()?

时间:2012-02-28 03:55:23

标签: php mysql html arrays

  

可能重复:
  MySQL query using an array
  Passing an array to mysql

我在PHP中有一个数组:

$array = array(1, 4, 5, 7);

正如您所看到的,我有一组不同的值,但是我想写一个MYSQL语句来检查id是否等于到任何值阵列。例如,如果一行的id为1,它将返回该行,对于4,5和7也是如此。由于程序的性质,数组的长度可能会有所不同,因此&# 39;问题所在。我可以这么做:

SELECT ...
  FROM ...
 WHERE id = '$array'

或者有更好的方法吗? 如果我不清楚,请向我询问更多信息。

6 个答案:

答案 0 :(得分:102)

使用IN

$sql = 'SELECT * 
          FROM `table` 
         WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';

答案 1 :(得分:27)

您要找的是IN()声明。这将测试给定字段是否包含1个或更多值中的任何一个。

SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)

您可以使用简单的循环将$array变量转换为正确的格式。如果您的数组值来自前端,请务必注意SQL注入。

答案 2 :(得分:15)

只需使用ID IN ()语法:

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";

答案 3 :(得分:1)

您可以这样编写查询:

select * from table where id in (1, 4, 6, 7)

您可以根据需要添加任意数量的值。

答案 4 :(得分:0)

你可以SELECT WHERE id IN (item1, item2...)。只需循环遍历PHP数组,为查询构建数组。

答案 5 :(得分:0)

您需要使用IN运算符:

$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';

MySQL可能会限制您在IN运算符列表中可以使用的值。