我正在使用这两行来使用codeigninter活动记录来更新我的表
$this->db->where('reference_number', $reference);
$this->db->update('patient', $data);
我想要的是检查天气它是否成功更新了表格,并且根据我想向用户发出通知,我如何检查这条线路是否成功更新?用户指南中没有任何线索告诉我们通过放行
if($this->db->update('patient', $data));
会给我们一个真或假的价值,我们可以这样做吗?或者这个问题还有其他解决办法吗?
的问候, Rangana
答案 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_errno和mysql_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;