我得到了以下错误,我花了几个小时查看它,但找不到原因!
错误:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解在第1行'primary='doej2',secondary='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();
}
}?>下面是我的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有人能看到我错过了什么吗?谢谢!
发布于 2009-07-14 23:23:49
"primary“是MySQL中的保留字。您可以在它周围打勾以正确使用它(以及其他字段:
$query = mysql_query("UPDATE `eventcal` SET `primary`='$primary', `secondary`='$secondary' WHERE `id`='$id'");发布于 2009-07-14 23:26:53
“‘primary”是MySQL保留字。从文档中:
如果您按照8.2节“Schema Object Names”中所述引用保留字,则允许将保留字作为标识符。
发布于 2011-05-29 05:02:19
比语法错误更糟糕的是SQL-injection hole:
更改此设置:

编码恐怖
$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];到下面的代码中
$id = mysql_real_escape_string($_POST['id']);
$primary = mysql_real_escape_string($_POST['primary']);
$secondary = mysql_real_escape_string($_POST['secondary']);https://stackoverflow.com/questions/1128613
复制相似问题