我在PHP中有一个数组:
$array = array(1, 4, 5, 7);
正如您所看到的,我有一组不同的值,但是我想写一个MYSQL语句来检查id
是否等于到任何值阵列。例如,如果一行的id
为1,它将返回该行,对于4,5和7也是如此。由于程序的性质,数组的长度可能会有所不同,因此&# 39;问题所在。我可以这么做:
SELECT ...
FROM ...
WHERE id = '$array'
或者有更好的方法吗? 如果我不清楚,请向我询问更多信息。
答案 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
运算符列表中可以使用的值。