php - 如何在 PHP 中的同一 mysqli_query 中使用 for 循环、IN 运算符

标签 php mysql for-loop in-operator

我想创建 mysqli_query 希望返回一个基于 ID 列表的数据库元组。

SQL中,查询如下:

SELECT * FROM `tale_name` WHERE `id` in(1,2,3,4);

假设 ids 放入名为 $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 结合使用... 有什么建议吗?

最佳答案

echo功能是用于输出。您需要构建一个变量,然后将其连接到您的字符串。您应该将其转换到 int至少要防止 SQL 注入(inject),但最佳实践是参数化您的查询。

$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关于该查询。

关于php - 如何在 PHP 中的同一 mysqli_query 中使用 for 循环、IN 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51974031/

相关文章:

php - Laravel 扩展类

php - 找不到请求的 URL - Laravel 5

mysql - phpMyAdmin MySQL 数据库 - 重置现有表上的自动增量编号并从头开始重新应用

mysql - 如何在MySQL中获取每个系列的最后一集?

php - 为什么我的 PDO 连接失败

Python - 使用 For 循环水平翻转图像

php - 在表格 Prestashop 中显示产品属性

php - 类别层次结构 (PHP/MySQL)

javascript - React native key 在 for 循环中未正确更新?

performance - 在 Perl 中更快地搜索文件