通知用户在codeigniter中成功更新

时间:2010-08-17 06:23:45

标签: php activerecord codeigniter error-handling

我正在使用这两行来使用codeigninter活动记录来更新我的表

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

我想要的是检查天气它是否成功更新了表格,并且根据我想向用户发出通知,我如何检查这条线路是否成功更新?用户指南中没有任何线索告诉我们通过放行

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

会给我们一个真或假的价值,我们可以这样做吗?或者这个问题还有其他解决办法吗?

的问候, Rangana

4 个答案:

答案 0 :(得分: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使用php的mysql_errnomysql_error函数。

然后在你的控制器内,你可以检查这样的错误......

$this->load->model("Model_name");
$report = $this->Model_name->func();
if (!$report['error']) {
  // update successful
} else {
  // update failed
}

答案 1 :(得分:6)

此外,您还可以使用$this->db->affected_rows()检查某些内容是否已实际更新。

答案 2 :(得分: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);
}

尽管使用flash会话数据系统取决于你:)你需要在视图文件中添加相关的前端,并根据自己的喜好进行调整等。

答案 3 :(得分:1)

使用此

return ($this->db->affected_rows() > 0) ? TRUE : FALSE;