我该如何解决这个错误,SQLSTATE [42000]? [复制]

Posted

技术标签:

【中文标题】我该如何解决这个错误,SQLSTATE [42000]? [复制]【英文标题】:how i can slove this error,SQLSTATE[42000]? [duplicate] 【发布时间】:2020-03-16 21:35:15 【问题描述】:

请帮我解决这个错误。我厌倦了寻找解决方案... 错误:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“WHERE name=NULL”附近使用正确的语法

我的数据库有 3 列=id(int),name(varchar),comment(varchar),我想在其中插入评论。

我的 php 代码:

<?php
include "./Config.php";
include './MyPDO.php';

  $response = array() ;
  $connect = MyPDO::getInstance();

  $name = $_REQUEST['name'];
  $comment=$_REQUEST['comment'];

        $query =  " INSERT INTO user "
                . " (comment) "
                . " VALUES "
                . " (:comment) "
                . " WHERE name=:name ";

        $stmt = $connect->prepare($query);
        $stmt->bindParam(":name",$name);
        $stmt->bindParam(":comment",$comment);
        try 
                $stmt->execute();
                $response['massage'] = "sucess";
                echo json_encode($response);
                exit;
         catch (PDOException $ex)  
                $response['massage'] = "error";
                $response['error']=$ex->getMessage();
                echo json_encode($response);
        







【问题讨论】:

INSERT 用于创建新行,UPDATE 用于创建新行。在 INSERT 查询中使用 WHERE 是没有意义的。 谢谢,我刚学php一周.. 【参考方案1】:

看起来你在这里混合了语法。您似乎想要更新现有记录。使用

update user
set comment = :comment
where name = :name

insert 如果用于创建新记录。

【讨论】:

【参考方案2】:

insert into ... values() 语法不采用where 子句。

如果你想insert,那么:

insert into user(name, comment) values(:name, :comment)

但实际上你可能想要update

update users set comment = :comment where name = :name;

前者在表中使用给定的名称和注释创建一条新记录。

后者修改已存在的具有相同name 的记录并设置其comment 值。

【讨论】:

以上是关于我该如何解决这个错误,SQLSTATE [42000]? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我该如何解决这个错误,它的原因是啥?

我该如何解决这个 composer.json 错误

类型错误,我该如何解决这个错误,在图片中我写了我的具体问题

npm 错误!代码 1.为啥这个错误消息会发生 npm ERR!代码1?我该如何解决

我该如何解决这个“Invalid `Podfile`”错误?

Error!: SQLSTATE[00000] [1040] Too many connections是啥意思