You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDO插入SQL语法错误求助:SQLSTATE[42000]:1064错误

问题排查与解决方案

嘿,我一下子就发现你代码里的关键问题啦!报错的根源是你在INSERT语句里用了WHERE子句——这是SQL语法的硬错误,MySQL根本不允许这么写。

为什么会报错?

INSERT语句的作用是向表中新增一条全新的记录,而WHERE是用来筛选已有记录的条件,两者完全不兼容。从你的需求来看,你应该是想更新已有unique_id对应记录的comments字段,这时候得用UPDATE语句才行。

修正后的代码

把你的SQL语句和对应逻辑改成下面这样就可以了:

<?php 
session_start(); 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "somedatabase"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    // 把INSERT改成UPDATE,语法调整为更新指定unique_id的comments字段
    $stmt = $conn->prepare("UPDATE patients SET comments = :comment WHERE unique_id = :unique_id"); 
    $stmt->bindParam(':comment', $comment); 
    $stmt->bindParam(':unique_id', $unique_id); 

    $comment = $_POST['comment']; 
    $unique_id = $_SESSION['unique_id']; 
    $stmt->execute(); 

    // header('Location: newMedicine.php'); 
} catch(PDOException $e){ 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
?>

额外说明

如果你确实是想新增一条包含unique_id和comments的记录,那正确的INSERT语句应该是这样(不需要WHERE):

INSERT INTO patients(unique_id, comments) VALUES (:unique_id, :comment)

但从你绑定unique_id并用WHERE筛选的逻辑来看,显然更新现有记录才是你的真实需求,所以上面的UPDATE版本应该能解决你的问题。

内容的提问来源于stack exchange,提问作者Ibrahim Hafiji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:04:28