首页 > 解决方案 > SQL 更新语句抛出 SQLSTATE[42000]:语法错误或访问冲突:1064

问题描述

当试图更新我的数据库时,我得到一个SQLSTATE[42000]:语法错误或访问冲突:1064 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 ':summary, goingWell: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
        ]);

这是我的数据库:

数据库

标签: php

解决方案


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

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

我建议您查找sql update doc和一些php 帮助


推荐阅读