将表单输入保存到MySQL数据库:遇到错误

时间:2012-12-02 18:51:18

标签: php html mysql forms

我正在尝试将表单中的一些输入保存到我的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()); 


             }
你能告诉我我做错了什么吗?我以前做过这个,但在这种情况下我似乎无法找到错误。 :(

2 个答案:

答案 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()); 


         }