2011-12-22 35 views
6

Tôi đang sử dụng phiên bản codeigniter 2.0.3. Tôi đang cố gắng lấy số hàng bị ảnh hưởng sau khi truy vấn cập nhật bằng cách sử dụng

$this->db->affected_rows 

Nó luôn trả về 1 ngay cả khi không có hàng nào được cập nhật. Tôi đã thử với

mysql_affected_rows() 

và trả về -1 vì lỗi truy vấn và 0 nếu không có bản ghi nào được cập nhật.

Chỉnh sửa bao gồm mã của tôi

Tôi chỉ sử dụng

$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

Bạn có phiền khi hiển thị mã của mình không? –

+0

tùy thuộc vào truy vấn bạn đang sử dụng trước $ this-> db-> affected_rows nếu bạn có thể hiển thị mã, bạn sẽ dễ dàng chia sẻ giải pháp. –

+0

H'mmm đó là lỗi từ phần của tôi. Hiện tại tôi đang làm việc tốt – Nick

Trả lời

13

Thực ra mã của tôi là như thế này

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(); 

Và tôi sửa đổi nó để

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(); 
} 

Và làm việc tốt ngay bây giờ.

Và cảm ơn bạn rất nhiều vì đã trả lời ..

+1

Cảm ơn, @Nick. Bất kỳ kỹ thuật nào để nhận hàng bị ảnh hưởng trong khi nhiều hàng chèn? –