Codeigniter - обработка ошибок при использовании активной записи


Я собираю несколько моделей для своего сайта codeigniter и, похоже, не могу найти в документации ни слова о том, как обрабатывать ошибки, которые могут возникнуть при использовании системы активных записей.

Документация демонстрирует, как выполнять CRUD вместе с некоторыми относительно сложными запросами, но нигде по ходу дела не обсуждается обработка ошибок. Я провел быстрый поиск в Google, и, похоже, классы активных записей не создают исключений. Так ли это на самом деле? Нет тогда попробуй поймать...

Итак, как вы кодируете для обработки ошибок базы данных в codeigniter? (неудачное соединение, дубликат ключа, нарушенная целостность ссылок, усечение, неправильные типы данных и т. Д. и т. Д.)

Author: Josh Crozier, 2010-02-05

2 answers

Независимо от того, используете вы класс активной записи или нет, вы можете получить доступ к ошибкам базы данных с помощью $this->db->_error_message() и $this->db->_error_number().

Если вы используете базу данных mysql, эти функции эквивалентны mysql_error() и mysql_errno() соответственно. Вы можете проверить эти функции, просмотрев исходный код драйвера базы данных для используемой вами базы данных. Они находятся в системе/базе данных/ драйверах.

Итак, после выполнения запроса вы можете проверить наличие ошибок, используя что-то вроде:

if ($this->db->_error_message()) \\handle error
 58
Author: emmychan, 2010-02-05 06:53:49

Прямо с форума поддержки CodeIgniter:

$res = $this->db->query($str);

if (!$res) {
  // if query returns null
  $msg = $this->db->_error_message();
  $num = $this->db->_error_number();

  $data['msg'] = "Error(".$num.") ".$msg;
  $this->load->view('customers_edit_view',$data);
} 

Обратите внимание, что вы также можете регистрировать ошибки активной записи, зайдя в файл конфигурации приложения CI и установив следующее:

$config['log_threshold'] = 1;
 12
Author: Peter Drinnan, 2012-12-02 04:14:38