Что возвращает insert_id() после неудачной вставки?Вставляет ли insert_id() в Codeigniter значение false при ошибке запроса?
ответ
Я думаю, что зависит от водителя вы используете. В MySQL случае определение функции является:
/**
* Insert ID
*
* @access public
* @return integer
*/
function insert_id()
{
return @mysql_insert_id($this->conn_id);
}
Теперь читать о mysql_insert_id
:
mysql_insert_id (PHP 4, PHP 5) Получить идентификатор генерируется в последнем запросе
Параметры:
ресурс $ link_identifier [опционально]Возврат:
Тип: intОписание: Идентификатор генерируется для столбца AUTO_INCREMENT предыдущим запросом на успех, 0, если предыдущий запрос не генерирует значение AUTO_INCREMENT, или ложным, если установлено не было никакой связи MySQL.
1.- Таким образом, он может вернуть идентификатор, 0 (ноль) или false.
2.- И когда вы запрашиваете failed insert
, он должен вернуть 0 (ноль).
Обратите внимание, что у оператора at sign (@)
ошибки, проигнорирует любое сообщение об ошибке, возвращенное функцией mysql_insert_id
PHP.
Так что в codeigniter вы, вероятно, захотите протестировать следующим образом: 'if ($ this-> db-> insert_id()! = 0)' с '0 == false'. – Gerbus
большинство функций codeigniter возвращают false, если они не имеют значения, чтобы дать вам. Я имею в виду, что он не вернет insert_id, потому что нет никакой insert_id, чтобы дать из-за ошибки.
Он возвращает идентификатор только при вставке базы данных.
В случае успеха он будет генерировать столбец AUTO_INCREMENT по предыдущему запросу В случае отказа он возвращает 0 Возвращает FALSE, если соединение MySQL не установлено.
И если ничего не вставлено? –
ответить обновлено спасибо –
Если вы посмотрите сами драйверы базы данных, каждая версия insert_id
реализована по-разному в зависимости от базовой базы данных. Например, MySQL insert_id
function просто оберткой mysql_insert_id
, которая возвращает:
Идентификатор генерируется для столбца AUTO_INCREMENT предыдущим запросом на успех, 0, если предыдущий запрос не генерирует значение AUTO_INCREMENT, или FALSE, если соединение MySQL не установлено.
С другой стороны, postgres function явно возвращает идентификатор (хотя я полагаю, исключение может быть выброшено, если сам запрос не удался):
$query = $this->query($sql);
$query = $query->row();
return (int) $query->ins_id;
- 1. запроса Codeigniter не вставляет
- 2. Codeigniter insert_id() странный вопрос
- 3. codeigniter oracle get insert_id()
- 4. codeigniter не равна ошибке запроса
- 5. insert_id в Kohana 3
- 6. Insert_id не может вернуть значение
- 7. Получить последний insert_id в URL-адресе в codeigniter
- 8. Codeigniter вставляет true как 0 в mysql
- 9. Форма не вставляет значение в базу данных по codeigniter
- 10. ВСТАВИТЬ запроса от триггера вставляет значение NULL
- 11. pg_connect не возвращает false при ошибке
- 12. $ this-> db-> insert_id(), дающий фатальную ошибку postgresql codeigniter
- 13. Как добавить значение в результат запроса CodeIgniter?
- 14. codeigniter form_validation return false
- 15. Как изменить значение запроса, возвращающего TRUE/FALSE
- 16. Ошибка в исходной ошибке Codeigniter
- 17. Codeigniter вставляет одинарные кавычки в массив
- 18. Как получить insert_id в переменной перед вставкой запроса
- 19. Rethinkdb вставляет результаты запроса в таблицу
- 20. Имеет ли SQLite что-то вроде insert_id?
- 21. значение checkbox в codeigniter
- 22. Почему Codeigniter set_flashdata() вставляет неправильную информацию?
- 23. Обработка ошибок запроса в CodeIgniter
- 24. MySQL вставляет значения из запроса
- 25. Обновление запроса обновляется и вставляет
- 26. PHP SQLite3 класс 'exec' функция не возвращает false при ошибке
- 27. fread не вставляет значение
- 28. PHP query insert_id не работает
- 29. array_push не вставляет значение
- 30. CodeIgniter - установка проверки формы false
Предполагая, что вы находитесь на MySQL, это будет переход к mysql last_insert_id(), который возвращает идентификатор последней ** SUCCESSFUL ** insert (даже если эта вставка была частью транзакции, которая была свернута назад). –