我正在尝试将表单中的一些输入保存到我的MySQL数据库中,但是我收到了这个错误:
未保存。您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在'desc,备注)附近使用正确的语法VALUES(第1行的'a','b','c'
这是我的完整PHP代码:
if (isset($_POST['region'], $_POST['desc'], $_POST['remarks']) && !empty ($_POST['region']) && !empty($_POST['desc']) && !empty($_POST['remarks']) )
{
$region = mysql_escape_string($_POST['region']);
$desc = mysql_escape_string($_POST['desc']);
$remarks = mysql_escape_string($_POST['remarks']);
mysql_query("INSERT INTO register (region, desc, remarks) VALUES(
'$region',
'$desc',
'$remarks') ") or die('Not saved. ' . mysql_error());
}
你能告诉我我做错了什么吗?我以前做过这个,但在这种情况下我似乎无法找到错误。 :(
答案 0 :(得分:0)
正如其他人已经指出的那样,desc
是SQL关键字,但是 NOT 必须更改列名才能使查询正常工作。您可能会考虑这一点,但绝对不是强制性的。诀窍是(这是一直做的好习惯)你应该总是使用反引号“`”来引用列名,以免使SQL引擎混淆。所以这会引发错误:
INSERT INTO register (region, desc, remarks) ...
但这很好:
INSERT INTO register (`region`, `desc`, `remarks`) ...
答案 1 :(得分:0)
尝试改变
'$region'
到
'".$region."'
并执行此操作
mysql_query("INSERT INTO register (`region`, `desc`, `remarks`) VALUES(
'".$region."',
'".$desc."',
'".$remarks."') ") or die('Not saved. ' . mysql_error());
}