2

我在使用这个 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

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

非常感谢。

4

7 回答 7

6

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

..., `DESC`, ...
于 2012-09-06T19:55:19.287 回答
3

DESC是保留关键字。如果您必须将其用作列名,请将其包装在反引号中:

`DESC`

于 2012-09-06T19:55:38.617 回答
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

于 2012-09-06T19:55:48.770 回答
1

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

$query ="INSERT INTO `groups` (`NAME`, `DESC`, `TIME`, `OWNER`) VALUES ('$GNAME','$DESC','$TIME', '$UID')";
于 2012-09-06T19:56:12.977 回答
1

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

于 2012-09-06T19:56:58.963 回答
0

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

于 2012-09-06T19:56:59.610 回答
0

采用

$DESCRIPTION = $_POST['desc'];

插入的

$DESC = $_POST['desc'];

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

$query ="INSERT INTO groups (NAME, DESC, TIME, OWNER) VALUES ('$GNAME','$DESCRIPTION','$TIME', '$UID')";
于 2012-09-06T19:58:06.080 回答