You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP处理checkbox提交数组生成正确MySQL INSERT插入语句的方法

问题原因

你的内层循环逻辑错误:$row_values定义在遍历选项的循环之外,导致同一个问题下的所有问题ID、答案值都被堆进了同一个数组,最后只包了一层括号,所有值都挤到了同一组括号里,不符合INSERT语句的多行值语法。

修正后代码

$submit = $_POST['que'];
$all_values = [];
$sql_submit_form = "INSERT INTO `tb_answers` (`question_id`, `answer`) VALUES ";

foreach ($submit as $question_id => $choise) {
    // 每个选中的选项单独生成一组值
    foreach ($choise as $s_value) {
        // 强制转成整型,避免SQL注入风险
        $safe_qid = intval($question_id);
        $safe_value = intval($s_value);
        $all_values[] = "($safe_qid, $safe_value)";
    }
}

$sql_submit_form .= implode(',', $all_values) . ';';
echo $sql_submit_form;

补充说明

如果你的字段类型是字符串,或者后续有非数字的存储需求,不要直接拼接用户输入到SQL语句中,一定要用PDO或者MySQLi的预处理语句来操作,避免SQL注入风险。

内容的提问来源于stack exchange,提问作者Ichigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:09:03