可能重复:
I have an array of integers, how do I use each one in a mysql query (in php)?
我正在尝试创建一些过滤功能,我想知道在mysqli查询中是否有可能检查表行的值是否只等于数组中的一个。我希望代码能让它更清晰:
$age=array(37,35);
$query = mysqli_query($link, "SELECT * FROM users WHERE age = $age");
所以我希望查询返回年龄为37或35的所有用户行,但上述代码不起作用。
使用
...WHERE age = 35 OR age = 37"
不会这样做,因为我希望它可以说是动态的。
由于
答案 0 :(得分:4)
使用SQL的IN()
子句。
SQL示例:
SELECT * FROM users WHERE age IN (35, 37)
PHP示例:
$query = "SELECT * FROM users WHERE age IN (" . implode(',', array_map('intval', $age)) . ")";
注意:请注意SQL Injection。
答案 1 :(得分:2)
$age=array(37,35);
$age_str=implode(',',$age);
$query = mysqli_query($link, "SELECT * FROM users WHERE age in ($age_str)");
答案 2 :(得分:1)
将php join方法与SQL
中的IN子句一起使用$age=array(37,35);
$query = mysqli_query($link, "SELECT * FROM users WHERE age IN (".join(",", $age).")");
答案 3 :(得分:1)
像这样使用:
$query = mysqli_query($link, "SELECT * FROM users WHERE age IN (" . implode(",",$age) . ")");
答案 4 :(得分:1)
使用in子句。
$ageArr = implode(',',$age);
SELECT * FROM users WHERE age IN ($ageArr);