Ошибка базы данных воспламенителя кода PHP - PullRequest
0 голосов
/ 27 мая 2011

Не могу понять, что здесь не так:

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 ]

5 голосов
/ 27 мая 2011

Индекс - зарезервированное слово в mysql.Вы должны поставить обратные метки вокруг имен столбцов, например, `index`,` tree_name` и т. Д.

2 голосов
/ 27 мая 2011

Индекс является защищенным словом в MySQL.Используйте `index` с обратными чертами.

Защищенные слова - это те слова, которые должны быть экранированы внутри запроса при обращении к ним как к полю.Полный список доступен здесь

1 голос
/ 27 мая 2011

Это ошибка MySQL, и это происходит потому, что в вашей таблице 'trees' используется зарезервированное слово для столбца 'index'.

Вы можете добавить обратные пометки `index` вокруг имени столбца - или даже лучше: измените имя столбца 'index' на 'id' или подобное.

Список зарезервированных слов в MySQL смотрите: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...