[英]php prepared statement SQLSTATE[42000]: Syntax error or access violation: 1064
[英]SQL Update Statement throws SQLSTATE[42000]: Syntax error or access violation: 1064
当尝试更新我的数据库时,我得到一个SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 查看与您的 MySQL 服务器版本对应的手册,了解在“:summary, wentWell:wentWell,”错误附近使用的正确语法。 非常感谢您的帮助,因为我已经尝试解决这个问题好几天了。
这是我用来更新数据库的代码 (journal.php):
public function updateJournal($array) {
$query = "UPDATE journal SET
summary:summary,
wentWell:wentWell,
doBetter:doBetter,
ideas:ideas,
mood:mood,
motivation:motivation,
concentration:concentration,
tranquility:tranquility,
physical:physical WHERE id=:journalId";
$stmt = $this -> connection -> prepare($query);
$stmt -> execute();
}
我使用数组 (updateJournal.php) 将数据发送到 updateJournal-Function (journal.php):
$checkJournal -> updateJournal([
"summary" => $summaryField,
"wentWell" => $wentWellField,
"doBetter" => $doBetterField,
"ideas" => $ideasField,
"mood" => $sliderValueMood,
"motivation" => $sliderValueMotivation,
"concentration" => $sliderValueConcentration,
"tranquility" => $sliderValueTranquility,
"physical" => $sliderValuePhysical,
"journalId" => $journalId
]);
这是我的数据库:
正确和安全的方法是像这样使用绑定参数(你几乎在那里):
public function updateJournal($array) {
$query = "UPDATE journal SET
summary=:summary,
wentWell=:wentWell,
doBetter=:doBetter,
ideas=:ideas,
mood=:mood,
motivation=:motivation,
concentration=:concentration,
tranquility=:tranquility,
physical=:physical WHERE id=:journalId";
$stmt = $this->connection->prepare($query);
$stmt->execute($array);
}
您只是缺少赋值中的等号,这是导致语法错误的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.