уведомление пользователя об успешном обновлении в codeigniter - PullRequest
3 голосов
/ 17 августа 2010

Я использую эти две строки для обновления моей таблицы с использованием активных записей codeigninter

$this->db->where('reference_number', $reference);
$this->db->update('patient', $data); 

я хочу проверить, успешно ли обновляется таблица, и в соответствии с этим я хочу датьуведомление пользователя, как я могу проверить, что с этими строками произошло успешное обновление?в руководстве пользователя нет никакой подсказки о том, что, поставив строку

if($this->db->update('patient', $data));

, мы получим истинное или ложное значение, можем ли мы сделать это?или есть другое решение этой проблемы?

regards, Rangana

Ответы [ 4 ]

12 голосов
/ 17 августа 2010

Вы можете поместить код, подобный этому, в вашу модель ...

function func() {
    $this->db->where('reference_number', $reference);
    $this->db->update('patient', $data); 

    $report = array();
    $report['error'] = $this->db->_error_number();
    $report['message'] = $this->db->_error_message();
    return $report;
}

_error_number и _error_message используют функции mysql_errno и mysql_error php.

Тогда внутри вашего контроллера вы можете проверить на ошибку, как это ...

$this->load->model("Model_name");
$report = $this->Model_name->func();
if (!$report['error']) {
  // update successful
} else {
  // update failed
}
6 голосов
/ 17 августа 2010

Кроме того, вы также можете использовать $this->db->affected_rows(), чтобы проверить, действительно ли что-то было обновлено.

2 голосов
/ 19 августа 2010

Могу ли я просто продолжить с @ShiVik - если вы используете функции _error_number() или _error_message(), вам нужно будет отключить автоматический отчет об ошибках базы данных.

Вы можете сделать это в /config/database.php.Установите db_debug = FALSE.

Способ обработки этой функциональности в моей системе состоит в том, чтобы просто протестировать результат, возвращаемый классом ActiveRecord, используя что-то вроде

if($this->db->update('patient', $data) === TRUE) {   
  $flash_data = array('type' => 'success', 'message'
=> 'Update successful!');
$this->session->set_flashdata('flash', $flash_data);
}

Хотя использование данных сеанса Flashсистема зависит от вас :) Вам нужно добавить соответствующий внешний интерфейс к этому в ваших файлах просмотра, настроить по своему вкусу и т. д.

1 голос
/ 06 июня 2013

используйте это

return ($this->db->affected_rows() > 0) ? TRUE : FALSE; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...