如何将PHP数组值插入MySQL数据库行?现有插入代码报错如何解决
解决方法
核心报错原因
你当前代码报错的根本原因是SQL拼接时直接传入了整个$option_mark数组,PHP中数组无法直接转换为字符串拼接进SQL语句,会触发Array to string conversion类型错误,自然无法正常执行入库逻辑。
你的$option_mark数组下标(1~4)和foreach遍历得到的$option变量(对应选项序号)是一一对应的,直接按下标取对应分值即可。
修复后的代码
if($result){ foreach($choice as $option => $value){ if($value != ""){ $is_correct = ($correct_choice == $option) ? 1 : 0; // 取对应选项的分值,不存在默认给0避免报错 $mark = isset($option_mark[$option]) ? $option_mark[$option] : 0; //Second Query for Choices Table $query = "INSERT INTO options ("; $query .= "question_number,choice,correct,mark)"; $query .= " VALUES ("; $query .= "'{$question_number}','{$value}','{$is_correct}','{$mark}'"; $query .= ")"; // 后续执行query的原有逻辑保留即可 } } }
额外安全优化建议
当前直接拼接SQL语句存在SQL注入风险,建议替换为PDO或mysqli的预处理语句来操作数据库,避免恶意输入攻击。
内容的提问来源于stack exchange,提问作者becky
相关产品推荐
相关产品推荐

