Codeigniter $ this-> db-> affected_rows()始终返回1

时间:2011-12-22 15:59:41

标签: codeigniter

我正在使用codeigniter 2.0.3版。我正在尝试使用

获取更新查询后受影响的行数
$this->db->affected_rows

即使没有更新行,它也始终返回1。我试过

mysql_affected_rows()

并且对于查询失败返回-1,如果没有更新记录则返回0。

编辑包含我的代码

我刚刚使用

$country_id = $this->input->post('country_id');
$time=$this->input->post('time');

$insert_array = array(
  'country' => $this->input->post('name')
);
$this->db->update('country_master', $insert_array, array("country_id" => $country_id,"last_updated"=>$time));
$afftectedRows=$this->db->affected_rows();

1 个答案:

答案 0 :(得分:17)

其实我的代码就像这样

if (!$country_id) {
    $this->db->insert('country_master', $insert_array);
    $id = $this->db->insert_id();
} else {
    $this->db->update('country_master', $insert_array, array("country_id" => $country_id, "last_updated" => $time));
}
$afftectedRows = $this->db->affected_rows();

我将其修改为

if (!$country_id) {                
    $this->db->insert('country_master', $insert_array);
    $id = $this->db->insert_id();
} else {
    $this->db->update('country_master', $insert_array, array("country_id" => $country_id, "last_updated" => $time));
    $afftectedRows = $this->db->affected_rows();
}

现在工作正常。

非常感谢你的回复..