#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