我不能为我的生活弄清楚为什么这不起作用。每次它都会引发错误:
$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')附近使用正确的语法
我无法理解!代码看起来很好,与我在另一个(完全工作)表单上使用的代码非常相似。
答案 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并使用占位符,以便自动转义您的数据/变量。