mysqli_query“where = $ some_array”只需要一个匹配

时间:2012-06-28 16:30:29

标签: php mysql arrays

  

可能重复:
  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"

不会这样做,因为我希望它可以说是动态的。

由于

5 个答案:

答案 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);