表单提交后出现MariaDB SQL语法错误near ')' at line 98
报错含义解释
报错中提到的line 98指的是提交给MariaDB执行的SQL语句的第98行,不是你PHP业务代码文件的第98行,二者行号没有对应关系,这是你找不到对应符号的核心原因。
错误定位
直接检查你拼接的INSERT语句末尾的VALUES部分,存在一个多余的尾逗号:
'$birthday', )
SQL语法规定VALUES列表的最后一个值后不能加逗号,数据库解析到这个多余逗号后,下一个字符就是闭合括号),因此抛出了syntax to use near ')'的错误。
代码里其他会触发异常的问题
- 所有
$_POST的数组键名错误使用了反引号`包裹,PHP中字符串数组键必须用单引号'包裹,反引号是shell执行运算符,会尝试将包裹内容作为系统命令运行,既无法正确获取POST参数,还存在严重安全隐患。正确写法示例:$question84 = $_POST['question84']; - 重复调用了两次
mysqli_connect,第二次连接属于冗余代码,没有复用已有连接也没有正确处理返回值,删除重复的连接调用即可。 - 当前手动拼接SQL、依赖
addslashes处理输入的方式无法完全防御SQL注入,也很容易因为特殊字符转义问题触发SQL语法错误,建议替换为mysqli预处理语句绑定参数的写法。
内容的提问来源于stack exchange,提问作者Matt Allen
相关产品推荐
相关产品推荐

