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
相关产品推荐
相关产品推荐

