如何在PHP中的同一mysqli_查询中使用for循环、IN运算符

如何在PHP中的同一mysqli_查询中使用for循环、IN运算符,php,mysql,for-loop,in-operator,Php,Mysql,For Loop,In Operator,我想创建一个mysqli_查询,它将返回一个基于ID列表的数据库元组 在SQL中,查询如下: SELECT * FROM `tale_name` WHERE `id` in(1,2,3,4); 假设id放在一个名为$id\u array的PHP数组中,那么我如何才能在PHP代码中编写相同的查询呢 首先,我尝试了以下代码(但我知道这不是真的): mysqli\u query($this->conn,“从'tale\u name'中选择*WHERE `id`in(“.for($i=0;$i

我想创建一个mysqli_查询,它将返回一个基于ID列表的数据库元组

SQL中,查询如下:

SELECT * FROM `tale_name` WHERE `id` in(1,2,3,4);
假设id放在一个名为$id\u array的PHP数组中,那么我如何才能在PHP代码中编写相同的查询呢

首先,我尝试了以下代码(但我知道这不是真的):

mysqli\u query($this->conn,“从'tale\u name'中选择*WHERE
`id`in(“.for($i=0;$i
似乎for循环不能与PHP中的mysqli_查询结合使用。。。 有什么建议吗?

你可以用

用法:
string内爆(string$glue,array$parties)


echo
功能用于输出。您需要构建一个变量,然后将其连接到字符串。至少应该将其强制转换为
int
,以防止SQL注入,不过最好的做法是参数化查询

$ids ='';
for ($i = 0; $i < count($id_array); $i++){ 
        $ids .= ((int)$id_array[$i]) . ', ';
}
$ids = rtrim($ids, ', ');
echo "SELECT * FROM `tale_name` WHERE `id` in ({$ids})";
然后对该查询使用
prepare
bind_param
execute

mysqli_query($this->conn, "SELECT * FROM `tale_name` WHERE `id` in (". implode(',', $id_array) .")");
$ids ='';
for ($i = 0; $i < count($id_array); $i++){ 
        $ids .= ((int)$id_array[$i]) . ', ';
}
$ids = rtrim($ids, ', ');
echo "SELECT * FROM `tale_name` WHERE `id` in ({$ids})";
$placeholders = str_repeat('?, ', count($id_array));
$placeholders = rtrim($placeholders, ', ');
echo "SELECT * FROM `tale_name` WHERE `id` in ({$placeholders})";