2011-12-22 24 views
6

Estoy usando codeigniter versión 2.0.3. Estoy tratando de obtener el número de filas afectadas después de una consulta de actualización utilizando

$this->db->affected_rows 

Siempre devuelve 1, incluso si hay una fila había sido actualizado. Intenté con

mysql_affected_rows() 

y devuelve -1 para un error de consulta y 0 si no se ha actualizado ningún registro.

Editar incluido mi código

sólo estoy usando

$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

¿Le importaría mostrar su código? –

+0

depende de la consulta que está utilizando antes de $ this-> db-> affected_rows si puede mostrar su código, será fácil compartir la solución. –

+0

H'mmm fue un error de mi parte. Está funcionando bien ahora – Nick

Respuesta

13

En realidad mi código era así

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

Y he modificado a

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

Y está funcionando bien ahora.

Y muchas gracias por las respuestas ..

+1

Gracias, @Nick. ¿Alguna técnica para obtener la fila afectada mientras se insertan varias filas? –