Codeigniter - обработка ошибок при использовании активной записи - PullRequest
48 голосов
/ 05 февраля 2010

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

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

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

Ответы [ 2 ]

58 голосов
/ 05 февраля 2010

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

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

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

if ($this->db->_error_message()) \\handle error
12 голосов
/ 02 декабря 2012

Прямо с форума поддержки 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);
} 

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

$config['log_threshold'] = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...