2010-08-17 6 views
3

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

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

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

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

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

С уважением, Rangana

+0

Вот ответ: http://stackoverflow.com/questions/2 0030642/check-if-db-update-success-with-codeigniter-when-might-no-rows-are-upd –

ответ

12

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

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 
} 
+0

Большое спасибо ShiVik! это было полезно! –

6

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

+0

Большое спасибо Богдану за эту дополнительную деталь, я также буду реализовывать это! :) –

2

Могу ли я просто следовать за @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); 
} 

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

1

использования этого

return ($this->db->affected_rows() > 0) ? TRUE : FALSE; 
Смежные вопросы