MySQL查询语法错误

lit*_*leK 0 php mysql syntax-error

我收到以下错误,我花了几个小时看着它,无法弄清楚为什么!

错误:您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'primary ='doej2'附近使用正确的语法,在第1行查找辅助='1'WHERE id ='2''

这是我的代码:

<?php
if (isset($_POST[Edit])){

$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];

$query = mysql_query("UPDATE eventcal SET primary='$primary', secondary='$secondary' WHERE id='$id'");

if (!$query) {
  $_SESSION['alert'] = 'ERROR: ' . mysql_error();
}

}?>
Run Code Online (Sandbox Code Playgroud)

这是eventcal表的表结构:

 CREATE TABLE `eventcal` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `region` tinyint(3) unsigned NOT NULL,
 `primary` varchar(25) NOT NULL,
 `secondary` tinyint(1) NOT NULL,
 `eventDate` date NOT NULL,
 PRIMARY KEY  (`id`),
 KEY `primary_2` (`primary`),
 KEY `secondary` (`secondary`),
 CONSTRAINT `eventcal_ibfk_1` FOREIGN KEY (`primary`) REFERENCES `users` (`username`) ON UPDATE CASCADE
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

任何人都能看到我错过的东西吗?谢谢!

Aar*_* W. 6

"primary"是MySQL中的保留字.您可以在它周围放置刻度以正确使用它(以及其他字段:

$query = mysql_query("UPDATE `eventcal` SET `primary`='$primary', `secondary`='$secondary' WHERE `id`='$id'");
Run Code Online (Sandbox Code Playgroud)