不添加到数据库

时间:2011-08-25 15:15:46

标签: php mysql

我不能为我的生活弄清楚为什么这不起作用。每次它都会引发错误:

$GROUPCREATE = $_POST['GROUPCREATE'];
$USER = $_POST['USER'];
mysql_connect ("localhost", "XXXX", "XXXX") or die ('Error: ' . mysql_error());
mysql_select_db ("XXXX");
$query="INSERT INTO contacts_groups (id, GROUP, USER)VALUES ('NULL','".$GROUPCREATE."','".$USER."')";
mysql_query($query) or die ('Error updating database' . mysql_error());
header( 'Location: add_done.php' ) ;

我收到以下错误: 您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行的“GROUP,USER”VALUES('NULL','Group Name','Username')附近使用正确的语法

我无法理解!代码看起来很好,与我在另一个(完全工作)表单上使用的代码非常相似。

4 个答案:

答案 0 :(得分:4)

GROUP是MySQL中受保护的关键字,这意味着如果您绝对 将其用作字段标识符,则必须将其放在这样的反引号中

`GROUP`

更好的版本是避免受保护的关键字。您可以在http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

获取所有这些列表

答案 1 :(得分:3)

GROUP是mysql中的保留字。你必须用反引号“逃避”它:

INSERT INTO contacts_groups (id, `GROUP`, USER) ...

您的代码也容易受到SQL注入攻击,因此请更好地处理。

答案 2 :(得分:1)

因为GROUP是MySQL中的保留字(GROUP BY)。您应该更改添加引号字段的名称,例如`。

答案 3 :(得分:1)

GROUP是MySQL保留的关键字,因此它会破坏您的查询。您需要使用后面的刻度来逃避它:

`GROUP`

请参阅MySQL Reserved Words手册页。

所以你的代码应该是这样的:

$query="INSERT INTO `contacts_groups` (`id`, `GROUP`, `USER`)
        VALUES ('NULL','$GROUPCREATE','$USER')";

您还会注意到我删除了您在查询中不必要的字符串连接。

您还应该小心将SQL查询放入SQL查询中以防止SQL注入发生。至少应该在查询之前运行以下内容:

$GROUPCREATE = mysql_real_escape_string($GROUPCREATE);

在您将要放入查询的所有PHP变量中。

理想情况下,您将使用PHPs PDO classes并使用占位符,以便自动转义您的数据/变量。