PDO执行UPDATE语句传入空值触发SQLSTATE[42000语法错误如何解决
问题排查结果
- 语法错误1:
factionID字段的反引号不配对,你提供的代码中仅在字段左侧加了反引号,右侧遗漏了闭合的反引号,会直接触发SQL语法报错。 - 语法错误2:
eventID字段重复出现了两次赋值语句,属于冗余代码,建议删除重复行。 - 代码不一致问题:你贴出的报错信息中明确提到了
storyID、teamID两个字段,但你提供的SQL样例中没有这两个字段的赋值逻辑,说明你实际运行的代码和你自查的代码不是同一份,实际运行的代码中这两个字段大概率也存在反引号不配对、末尾逗号多余的问题。 - 类型绑定隐患:如果对应字段是int数值类型,传入空字符串
''绑定的话,PDO默认会按字符串类型处理参数,部分开启严格模式的MySQL服务会抛出类型错误,绑定参数时建议指定PDO::PARAM_INT类型。
修正后SQL参考
$sql = "UPDATE `frm_THREAD` SET `charID` = :charID, `modID` = :modID, `userID` = :userID, `catID` = :catID, `groupID` = :groupID, `eventID` = :eventID, `factionID` = :factionID, `storyID` = :storyID, `teamID` = :teamID WHERE `threadID` = :threadID; ";
内容的提问来源于stack exchange,提问作者Monkeework
相关产品推荐
相关产品推荐

