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
相关产品推荐
相关产品推荐

