我正在尝试更新表格中的一行,我已经进入了泡菜。
$username = $_SESSION['username'];
$stmt = $db->prepare("UPDATE `players`(`plusadd`,`takeaway`,`dsum`,`msum`)
VALUES (:plusadd,:takeaway,:dsum,:msum) WHERE username = :username");
$stmt->execute(array(
':username' => $_SESSION['username'],
':plusadd' => $plusadd,
':takeaway' => $takeaway,
':dsum' => $dsum,
':msum' => $msum,
));
我得到以下错误,我已经删除了不相关的部分
'(`plusadd`,`takeaway`,`dsum`,`msum`) VALUES
('2','3','5','1')where username = 'd'
它还引用了行));
我不确定用户名d
来自哪里,因为我使用的用户名是demo
这是完整的错误
Fatal error: Uncaught exception 'PDOException'
with message 'SQLSTATE[42000]: Syntax error or
access violation: 1064 You have an error in your
SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax
to use near '(`plusadd`,`takeaway`,`dsum`,`msum`)
VALUES ('2','3','5','1')where username = 'd' at
line 1' in www\grade.php:54 Stack trace: #0
www\grade.php(54): PDOStatement->execute(Array)
#1 {main} thrown in www\grade.php on line 54
答案 0 :(得分:1)
你可能想要进行INSERT,而不是UPDATE,所以我开始相信。
"INSERT into `players` (`plusadd`,`takeaway`,`dsum`,`msum`) ...
否则,如果您想进行更新,则需要使用SET
即:
"UPDATE `players` SET plusadd = :plusadd, takeaway=:takeaway, dsum=:dsum, msum= :msum...
如果您希望更新UPDATE。
否则,请使用INSERT INTO
答案 1 :(得分:1)
您正在混淆INSERT与UPDATE的语法。
UPDATE是这样的:
UPDATE tablename SET column = value, column = value, ...
WHERE condition;
INSERT是这样的:
INSERT INTO tablename (columns...) VALUES (values...);
Insert不支持WHERE子句,因为如果你要插入一个新行,那么该行自然不存在,所以用WHERE条件查找它是没有意义的。
MySQL支持INSERT的替代语法,使其看起来类似于UPDATE语句:
INSERT INTO tablename SET column = value, column = value, ...;
但仍然不支持WHERE子句。