MYSQLI - WHERE IN数组

1 php mysql mysqli where

我已经在互联网上查看了这个问题的答案,并准备好了语句和绑定参数(我不知道那是什么东西)

基本上,我有一个逗号分隔列表

$list = 'food, drink, cooking';
Run Code Online (Sandbox Code Playgroud)

好的,现在我想在数据库的一列中搜索每个项目...听起来很简单,对吧?

$query = "SELECT * FROM table WHERE stuff IN ('$list')";
$runquery = mysqli_query($connection, $query);
while($row = mysqli_fetch_array($runquery,MYSQLI_ASSOC)){
    $variable = $row;
}
Run Code Online (Sandbox Code Playgroud)

然后,

var_dump($variable);
Run Code Online (Sandbox Code Playgroud)

未定义的变量

为什么?我看不出代码有什么问题.它可以工作,如果我把一个特定的值,我已经测试了WHERE stuff=$item- 这工作正常.

所以它不是变量/数据库,它是IN语句中的错误.我不明白为什么它不起作用.

Kyl*_*lie 8

每个元素都需要它周围的引号

$list = "'food', 'drink', 'cooking'";
$query = "SELECT * FROM table WHERE stuff IN ($list)";
Run Code Online (Sandbox Code Playgroud)

或者如果你有一个阵列

$array = array("food","drink","cooking");
$query = "SELECT * FROM table WHERE stuff IN (".implode(',', $array).")";
Run Code Online (Sandbox Code Playgroud)

  • 变量来自哪里并不重要。必须无条件地使用准备好的语句。 (3认同)
  • 数组方法将不起作用。 (2认同)