繁体   English   中英

SQL 更新语句抛出 SQLSTATE[42000]:语法错误或访问冲突: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
        ]);

这是我的数据库:

数据库

首先在您的集合查询中语法错误,您需要将:替换为=。 然后在你的查询中没有传递数组的变量你需要这样的东西:

 $query = "UPDATE journal SET summary=".$array['summary'].",
                              wentWell=".$array['wentWell'].",...

我建议您查找sql 更新文档,也许还有一些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($array);
    }

您只是缺少赋值中的等号,这是导致语法错误的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM