首页 > 解决方案 > 我怎样才能解决这个错误,SQLSTATE [42000]?

问题描述

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

我的数据库有 3 column=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);
        }







标签: phpmysqlsqlsql-updatesql-insert

解决方案


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

如果你想insert,那么:

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

但实际上看起来你可能想要一个update

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

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

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


推荐阅读