PHP+MySQL多ID批量查询:如何循环执行SQL并获取结果
遍历查询并获取字符串形式结果
基础实现(基于现有代码修改)
直接遍历$queries数组,自动执行每个查询并拼接结果字符串,同时添加基础错误处理:
// 初始化存储所有结果的字符串 $resultsString = ''; // 遍历所有生成的查询语句 foreach ($queries as $queryIndex => $sql) { // 执行查询(注意mysqli_query的参数顺序是连接在前,SQL在后) $oRecordset = mysqli_query($oConnexion, $sql); // 检查查询是否成功 if (!$oRecordset) { $resultsString .= "查询 {$queryIndex} 执行失败: " . mysqli_error($oConnexion) . "\n"; continue; } // 遍历当前查询的结果集 while ($fetch = mysqli_fetch_object($oRecordset)) { // 自定义结果字符串格式,可根据需求调整 $rowContent = sprintf( "查询 %d 记录 - PK: %s, 用户ID: %s\n", $queryIndex, $fetch->PK_ASSOC_OVRUSRTCH, $fetch->FK_OUT_REF_USR ); $resultsString .= $rowContent; } // 释放结果集,避免内存占用 mysqli_free_result($oRecordset); } // 输出或使用结果字符串 echo $resultsString;
关键点说明:
- 用
foreach替代手动索引调用,自动处理所有查询,无需逐个写$queries[0]、$queries[1] - 添加查询失败的错误捕获,避免脚本中断
- 自定义结果字符串的格式,可根据需求修改(比如用逗号分隔、JSON格式等)
- 释放结果集,优化内存使用
安全优化方案(使用预处理语句)
原有代码存在SQL注入风险(直接将变量拼接到SQL中),建议改用参数化查询(预处理语句),同时实现遍历逻辑:
// 重构查询生成逻辑,返回参数化SQL和对应参数 $queries = array_map(static function ($odd_task) use ($id_oeuvre): array { return [ "SELECT PK_ASSOC_OVRUSRTCH, FK_OUT_REF_USR FROM sc_t_assoc_ovr_usr_tch WHERE FK_OUT_REF_TCH = ? AND FK_OUT_REF_OVR = ?;", [$odd_task, $id_oeuvre] // 对应SQL中的占位符参数 ]; }, $odd_tasks); // 遍历预处理查询并收集结果 $resultsString = ''; foreach ($queries as $queryIndex => [$sql, $params]) { // 初始化预处理语句 $stmt = mysqli_prepare($oConnexion, $sql); if (!$stmt) { $resultsString .= "查询 {$queryIndex} 预处理失败: " . mysqli_error($oConnexion) . "\n"; continue; } // 绑定参数:"ii"表示两个整数类型参数,若为字符串则用"ss",需根据实际字段类型调整 mysqli_stmt_bind_param($stmt, "ii", ...$params); // 执行查询 mysqli_stmt_execute($stmt); // 获取结果集 $result = mysqli_stmt_get_result($stmt); while ($fetch = mysqli_fetch_object($result)) { $rowContent = sprintf( "查询 %d 记录 - PK: %s, 用户ID: %s\n", $queryIndex, $fetch->PK_ASSOC_OVRUSRTCH, $fetch->FK_OUT_REF_USR ); $resultsString .= $rowContent; } // 关闭预处理语句 mysqli_stmt_close($stmt); } echo $resultsString;
安全说明:
- 参数化查询将变量与SQL逻辑分离,彻底避免SQL注入攻击
- 占位符
?替代直接变量拼接,数据库会自动处理参数转义
内容的提问来源于stack exchange,提问作者Eferra83
相关产品推荐
相关产品推荐

