Синтаксическая ошибка в модели ci

#php #codeigniter

#php #codeigniter

Вопрос:

У меня просто небольшая проблема с моей вставкой в запрос с помощью codeigniter по какой-то причине, о которой он говорит syntax error check the manual that corresponds to your MySQL server version . Я думал, что сделал все правильно, выглядит нормально для меня, но не уверен.

Я думал, что мог бы сделать это таким образом.

 public function database() {
$data['db_prefix'] = $this->db->dbprefix; $data['username'] = $this->input->post('username'); $data['email'] = $this->input->post('email'); $data['password'] = $this->input->post('password'); 

$this->db->query("DELETE FROM `" . $data['db_prefix'] . "user` WHERE user_id = '1'");

$this->db->query("INSERT INTO `" . $data['db_prefix'] . "user` SET user_id = '1', user_group_id = '1', username = '" . $this->db->escape($data['username']) . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', status = '1', email = '" . $this->db->escape($data['email']) . "', date_added = NOW()");
} 
  

Комментарии:

1. Пожалуйста, переформатируйте свой код, чтобы его можно было читать.

2. может быть, один из столбцов является ключевым словом? Попробуйте окружить все столбцы обратными метками

3. Ваш синтаксис вставки неверен. Использование: ВСТАВКА В ЗНАЧЕНИЯ таблицы…

4. Вы имеете в виду формат массива

5. ВСТАВИТЬ В users ( name , age , country , city ) ЗНАЧЕНИЯ (‘Evgen’, 26, ‘Russia’, ‘Рязань’)

Ответ №1:

status является зарезервированным словом в MySQL http://dev.mysql.com/doc/refman/5.1/en/show-status.html

Завершите status INSERT запрос с помощью `

 $this->db->query("
    INSERT INTO 
       `" . $data['db_prefix'] . "user` 
    SET 
         user_id       = '1', 
         user_group_id = '1', 
         username      = '" . $this->db->escape($data['username']) . "',  
         salt          = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', 
         password      = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', 

         `status`      = '1', 

         email         = '" . $this->db->escape($data['email']) . "', 
         date_added    = NOW()

");
  

Комментарии:

1. Я думал, что это сработало, но теперь все еще говорю, что у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘admin», salt = «47f256d74″, password = » в строке 6 я использую codeigniter