MySql查询出错

时间:2012-09-06 19:53:48

标签: php mysql

我遇到了这个MySql查询的问题:

INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME', '$DESC', '$TIME', '$UID')

本质上,该脚本将注册该组的人员的组名,描述,时间和用户名添加到mysql数据库中。

完整脚本:

<?php
include_once('include/session.php');
$GNAME = $_POST['groupname'];
$DESC = $_POST['desc'];
$SPAM = $_POST['spam'];
$UID = $_POST['UID'];
$TIME = date('Y-m-d H:i:s');
if($SPAM == "queuee"){


$query ="INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME','$DESC','$TIME', '$UID')";

$result = mysql_query($query) or die("There as been an Error! <hr>Error:<hr>".mysql_error() ."<br><hr><a href=\"../index.php\">Go Back</a>");
header("Location: ../group.php?id=$GNAME");
}else{
?>
The Security Question was wrong. Try Again.

<?
}
?>

我使用Phpmyadmin直接将查询运行到MySql中。但它仍然犯了一个错误。 错误是:

#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 'DESC, TIME, OWNER) VALUES ('$GNAME', '$DESC', '$TIME', '$UID')' at line 1

任何帮助都非常感谢,也许我是一个完全傻瓜而没有注意到一个明显的错误。如果您需要更多信息,请询问!

非常感谢。

7 个答案:

答案 0 :(得分:6)

“DESC”是一个关键字。把它放在反引号中。

..., `DESC`, ...

答案 1 :(得分:3)

DESC是保留的keyword。如果必须将它用作列名,请将其包装在反引号中:

  

`DESC`

答案 2 :(得分:2)

尝试:

INSERT INTO groups (`NAME`, `DESC`, `TIME`, `OWNER`) VALUES ('$GNAME','$DESC','$TIME', '$UID')";

你使用保留字作为列名 - 在这种情况下PHP非常混乱。

我还应该补充一点,你的代码对SQL注入是开放的,你应该考虑不再使用mysql_ *函数。

mysqli的快速入门指南位于http://www.php.net/manual/en/mysqli.quickstart.php

PDO是另一种选择;准备好的陈述信息在http://www.php.net/manual/en/pdo.prepared-statements.php

答案 3 :(得分:1)

DESC是SQL关键字,使用``来转义列名:

$query ="INSERT INTO `groups` (`NAME`, `DESC`, `TIME`, `OWNER`) VALUES ('$GNAME','$DESC','$TIME', '$UID')";

答案 4 :(得分:1)

根据MySQL Reserved Words,“DESC”这个词不能用作字段名,除非你用反引号括起来。

答案 5 :(得分:0)

在“INSERT INTO groups”部分中,在DESC周围放置单引号(或双引号)。 DESC是保留字,必须引用。

答案 6 :(得分:0)

使用

$DESCRIPTION = $_POST['desc'];

而不是

$DESC = $_POST['desc'];

$ DESCRIPTION 在您的查询中使用变量

$query ="INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME','$DESCRIPTION','$TIME', '$UID')";