PHP Codeigniter数据库错误

时间:2011-05-27 15:48:38

标签: php codeigniter

无法弄清楚这里有什么问题:

class Model_form extends CI_Model
{
  function __construct()
  {
        // Call the Model constructor
        parent::__construct();
  }

  function add_tree()
  {
    $v_treename = $this->input->post('f_treename');
    $v_treedesc = $this->input->post('f_treedesc');
    $v_treeid = $v_treename;
    $this->db->query("INSERT INTO trees (index, tree_name, tree_desc, tree_id) VALUES (NULL, '$v_treename', '$v_treedesc', '$v_treeid') "); //PROBLEM OCCURS HERE
} 

收到此错误:

A Database Error Occurred
Error Number: 1064

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 'index, tree_name, tree_desc, tree_id) VALUES (NULL, 'TEST', 'TEST', 'TEST')' at line 1 

我在另一个项目中使用了类似的代码,但它运行良好。使用MAMP在本地服务器上运行。感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:5)

索引是mysql中的保留字。你需要在列名称周围添加反引号,即`index`,`tree_name`等。

答案 1 :(得分:2)

索引是mysql中受保护的单词。使用带有反引号的`index`。

受保护的单词是指在将它们称为字段时必须在查询中转义的单词。完整列表可用here

答案 2 :(得分:1)

这是一个MySQL错误,它的发生是因为你的树木'表格正在使用'索引的保留字。列。

您可以在列名称周围添加“index”反引号 - 甚至更好:更改'索引'列名称为' id'或类似的。

有关MySQL中保留字的列表,请参阅: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html