У меня проблемы с поиском простого метода обработки ошибок базы данных в CI.Например, я не могу вставить повторяющиеся записи в таблицу базы данных.Если я пытаюсь это сделать, я получаю ошибку базы данных 1062
.
Наиболее распространенное предлагаемое решение - проверить, существует ли уже запись, и использовать
$query->num_rows() > 0
в операторе if, чтобы предотвратить ошибку.Этот метод кажется мне излишним, потому что я выполняю дополнительный запрос.В идеале я хочу проверить, не возникает ли ошибка в моем основном запросе или затрагивается строка.
Я нашел следующие функции, которые могут помочь
$this->db->affected_rows()
$this->db->_error_message()
, но я не уверен, как их использовать.
Я пытался в моей модели:
$this->db->insert('subscription', $data);
return $this->db->affected_rows();
Насколько я понимаю, это должно вернуть количество произведенных строк.Затем в своем контроллере я добавил:
$affected = $this->Subscribe_model->subscribe($data);
if ($affected < 1)
{
//display error message in view
}
else
{
$this->Subscribe_model->subscribe($data); //perform query
}
К сожалению, сценарий останавливается в модели на $this->db->insert('subscription', $data);
, если возникает ошибка, и отображает ошибку всей базы данных.