PHP执行UPDATE更新语句报错Unknown column 'Jason' in 'field list'如何解决
数据库更新报错Unknown column 'xxx' in 'field list' 问题解决
报错信息:
Error updating record: Unknown column 'Jason' in 'field list'
问题复现背景
- 使用PHP进行开发,原执行的更新SQL语句为:
$sql = "UPDATE users SET FirstName=$fname WHERE id=$id"; - 变量取值说明:
$fname实际传入值为Jason,$id经校验取值正常 - 预期逻辑:修改users表指定id行的FirstName字段值为
Jason - 实际问题:SQL解析时将
Jason识别为字段名而非待写入的字符串值,直接硬编码写入"Jason"会触发意外字符串语法错误,且业务要求$fname为用户可自定义的变量。
根因与修复方案
SQL语法规定,字符串类型的字段值必须使用单引号包裹。此前误区认为引号仅可用于硬编码字符串,实际拼接SQL时变量形式的字符串值同样需要用引号包裹。
修改后的正确SQL写法:
$sql = "UPDATE users SET FirstName='$fname' WHERE id=$id";
调整后更新操作即可正常执行。
安全建议
直接将用户可控变量拼接入SQL语句存在SQL注入的高危安全风险,生产环境优先使用预处理语句(Prepared Statements)构建SQL查询,既可以规避注入风险,也无需手动处理字符串的引号包裹逻辑。
内容的提问来源于stack exchange,提问作者Jason Singell
相关产品推荐
相关产品推荐

