MySQL插入数据报1054 Unknown column '13'错误,附完整代码求排查
错误原因
你遇到的1054报错由两个核心问题导致:
- 插入逻辑的预处理语句中,
:user_id占位符被多余的反引号包裹,PDO无法识别被反引号(MySQL标识符标记)包裹的内容为参数占位符,参数绑定失效,导致传入的用户ID值13被MySQL错误解析为字段名,触发报错。 - 新增评论表单的下拉框option的value属性前后额外添加了空格,导致POST提交的用户ID、商品ID值前后携带空白字符,可能额外触发字段类型匹配错误。
修复方案
1. 修复预处理语句
找到插入逻辑中的prepare代码,去掉:user_id外层的反引号:
原代码:
$stmt = $con->prepare("INSERT INTO comments(comment,item_id,`user_id`) VALUES(:comment,:item_id,`:user_id`)");
修改后:
$stmt = $con->prepare("INSERT INTO comments(comment,item_id,user_id) VALUES(:comment,:item_id,:user_id)");
2. 修复表单下拉框的多余空格
找到用户下拉框的输出代码,去掉value属性内的多余空格:
原代码:
echo '<option value = " '. $user['User_id'] . ' ">' . $user['Username'] . '</option>';
修改后:
echo '<option value = "'. $user['User_id'] . '">' . $user['Username'] . '</option>';
同样修改商品下拉框的输出代码:
原代码:
echo '<option value = " '. $user['Item_ID'] . ' ">' . $user['Name'] . '</option>';
修改后:
echo '<option value = "'. $user['Item_ID'] . '">' . $user['Name'] . '</option>';
可选优化项
- 将添加评论表单的提交按钮文案从
Update改为Add Comment,符合功能语义 - 将插入成功的提示文案从
Record Update改为Record Inserted,避免语义混淆
内容的提问来源于stack exchange,提问作者R_isa
相关产品推荐
相关产品推荐

