phpcodeignitermysql-error-1064reserved-wordsinsert-query

CodeIgniter INSERT query with column called "index" gives database error 1064


I can't figure out what's wrong here:

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
    } 

Get this error:

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

I've used similar code on another project and it worked fine. Running on local server with MAMP.


Solution

  • Index is a reserved word in mysql. You need to put backticks around the column names ie `index`, `tree_name` etc.