PHP/MySQLi在WHERE in子句中使用字符串数组和准备好的语句

PHP/MySQLi在WHERE in子句中使用字符串数组和准备好的语句,php,mysql,mysqli,Php,Mysql,Mysqli,我想制作一个动态WHERE子句,通过多个海报查找帖子。这是到目前为止我的代码 $in = join(',', array_fill(0, count($myArray), "?")); $query = "SELECT * FROM posts WHERE poster IN ($in)"; $statement = $conn->prepare($query); $statement->bind_param(str_repeat("s", count($myArray)), ...

我想制作一个动态WHERE子句,通过多个海报查找帖子。这是到目前为止我的代码

$in = join(',', array_fill(0, count($myArray), "?"));
$query = "SELECT * FROM posts WHERE poster IN ($in)";
$statement = $conn->prepare($query);
$statement->bind_param(str_repeat("s", count($myArray)), ...$myArray);
$statement->execute();
$result = $statement->get_result();

上面的代码正在运行,但只适用于我数组中的第一个人。如何从数组中列出的每个人那里获取帖子?

构建一个字符串,并使用foreach循环将其附加到$query中

$where = "where poster IN ( "
foreach ($myArray as $value) {
    $where = $where + "'" + $value + "'"
}
 $where = $where + " )"

消极的在PHP(即javascript)中,不使用
+
进行连接。另外,你需要分号。另外,您应该将
等大小写关键字限制为
,这会破坏使用准备语句的全部目的。请不要推荐此选项。在您了解
$myArray
中的内容之前,我们无法回答此问题。实际上,您不应该使用别名。是的别名。它现在可能可以工作,但要等到他们出于某种原因决定弃用别名(这种情况经常发生)。例如,$myArray是Array([0]=>krithik[1]=>alex)$myArray只包含用户用户名的字符串。此代码可能重复。问题在于阵列和/或数据库。