【问题标题】:notifying the user about successful update in codeigniter在 codeigniter 中通知用户更新成功
【发布时间】:2011-03-30 19:30:59
【问题描述】:

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

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

我想要检查天气它是否成功更新了表格并据此我想向用户发出通知,我如何检查这些行是否成功更新?用户指南中没有任何线索可以通过放置行来说明这一点

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

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

问候, 兰加纳

【问题讨论】:

标签: php activerecord codeigniter error-handling


【解决方案1】:

你可以在你的模型中加入这样的代码...

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
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 非常感谢 Bogdan 提供的额外细节,我也会实施! :)
    【解决方案3】:

    我可以从@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 会话数据系统的使用取决于您 :) 您需要在视图文件中添加相关的前端,并根据自己的喜好进行调整等。

    【讨论】:

      【解决方案4】:

      使用这个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-12
        • 2019-12-06
        相关资源
        最近更新 更多