mysql语句中的错误

时间:2011-11-19 13:08:27

标签: php mysql

我无法找到我的错误。

    $result= mysql_query(" INSERT INTO inbox ( messages,   from,   to,   date,   control_panel_id,   title )
                       VALUES(  '".$message."'  ,  '".$this->sender."'  ,  '".$this->recipient."', NOW() ,  '".$this->control_panel_id."'  ,  '".$title."'  )
                     ") or die(mysql_error());

我明白了:

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 'from, to, date, control_panel_id, title ) VALUES( ' ' at line 1

我在做什么是错的?

3 个答案:

答案 0 :(得分:3)

当您将reserved words用作名称或别名时,需要引用{{3}}。您可以通过用反引号包围它们来完成此操作,例如:

from

如果有疑问,您可以安全地引用所有列名称。

SELECT messages, `from`, ...

另外,您可能希望考虑避免将来保留的名称,以避免这样的问题。

答案 1 :(得分:2)

from是SQL中的保留字。如果这是一个列名,你总是必须将它括在反引号中。 (或ANSI模式的双引号)。

你也可以通过实际使用双引号来编写你的mysql_query字符串,这样做很麻烦:

 $result = mysql_query("
              INSERT INTO inbox
                ( messages,   `from`,   `to`,   `date`,
                 control_panel_id,   title )
              VALUES
                ( '$message', '$this->sender',  '$this->recipient',
                  NOW() ,  '$this->control_panel_id',  '$title' )
           ")
           or die(mysql_error());

(和contemporary PHP数据库接口的工作量更少,bla bla ..)

答案 2 :(得分:0)

Mysql不支持某些关键字,因为它在mysql语法中使用,所以我认为你已经改变了 关键字from,to和date to other name ...