首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询出现语法错误

MySQL查询出现语法错误
EN

Stack Overflow用户
提问于 2009-07-14 23:18:28
回答 3查看 279关注 0票数 0

我得到了以下错误,我花了几个小时查看它,但找不到原因!

错误:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解在第1行'primary='doej2',secondary='1‘WHERE id=’2‘附近使用的正确语法。

下面是我的代码:

代码语言:javascript
复制
<?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表的表结构:

代码语言:javascript
复制
 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

有人能看到我错过了什么吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-14 23:23:49

"primary“是MySQL中的保留字。您可以在它周围打勾以正确使用它(以及其他字段:

代码语言:javascript
复制
$query = mysql_query("UPDATE `eventcal` SET `primary`='$primary', `secondary`='$secondary' WHERE `id`='$id'");
票数 6
EN

Stack Overflow用户

发布于 2009-07-14 23:26:53

“‘primary”是MySQL保留字。从文档中:

如果您按照8.2节“Schema Object Names”中所述引用保留字,则允许将保留字作为标识符。

票数 1
EN

Stack Overflow用户

发布于 2011-05-29 05:02:19

比语法错误更糟糕的是SQL-injection hole:

更改此设置:

编码恐怖

代码语言:javascript
复制
$id = $_POST['id'];
$primary = $_POST['primary'];
$secondary = $_POST['secondary'];

到下面的代码中

代码语言:javascript
复制
$id = mysql_real_escape_string($_POST['id']);
$primary = mysql_real_escape_string($_POST['primary']);
$secondary = mysql_real_escape_string($_POST['secondary']);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1128613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档