如何使用 for 循环,IN 运算符 in same mysqli_query in PHP
How to use the for loop, the IN operator in same mysqli_query in PHP
我想创建 mysqli_query 希望 return 基于 ID 列表的数据库元组。
在SQL中查询如下:
SELECT * FROM `tale_name` WHERE `id` in(1,2,3,4);
假设将 id 放入一个名为 $id_array 的 PHP 数组中,那么我如何编写相同的查询,但在 PHP代码?
作为开始,我尝试了以下代码(但我知道这不是真的):
mysqli_query($this->conn, "SELECT * FROM `tale_name` WHERE
`id` in (".for ($i = 0; $i < count($id_array); $i++){ echo $id_array[$i]}.")");
for 循环似乎不能与 PHP 中的 mysqli_query 组合...
有什么建议吗?
您可以使用 implode()
.
用法:string implode ( string $glue , array $pieces )
mysqli_query($this->conn, "SELECT * FROM `tale_name` WHERE `id` in (". implode(',', $id_array) .")");
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})";
参数化版本:
$placeholders = str_repeat('?, ', count($id_array));
$placeholders = rtrim($placeholders, ', ');
echo "SELECT * FROM `tale_name` WHERE `id` in ({$placeholders})";
然后对该查询使用 prepare
、bind_param
和 execute
。
我想创建 mysqli_query 希望 return 基于 ID 列表的数据库元组。
在SQL中查询如下:
SELECT * FROM `tale_name` WHERE `id` in(1,2,3,4);
假设将 id 放入一个名为 $id_array 的 PHP 数组中,那么我如何编写相同的查询,但在 PHP代码?
作为开始,我尝试了以下代码(但我知道这不是真的):
mysqli_query($this->conn, "SELECT * FROM `tale_name` WHERE
`id` in (".for ($i = 0; $i < count($id_array); $i++){ echo $id_array[$i]}.")");
for 循环似乎不能与 PHP 中的 mysqli_query 组合... 有什么建议吗?
您可以使用 implode()
.
用法:string implode ( string $glue , array $pieces )
mysqli_query($this->conn, "SELECT * FROM `tale_name` WHERE `id` in (". implode(',', $id_array) .")");
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})";
参数化版本:
$placeholders = str_repeat('?, ', count($id_array));
$placeholders = rtrim($placeholders, ', ');
echo "SELECT * FROM `tale_name` WHERE `id` in ({$placeholders})";
然后对该查询使用 prepare
、bind_param
和 execute
。