query num_rows not last insert_id delete affected mysql codeigniter rows-affected

mysql - num_rows - row affected codeigniter



Codeigniter db-> update() VS MySQL native UPDATE Filas afectadas: 0 (1)

Intente obtener la consulta de que CodeIgniter se está ejecutando utilizando el siguiente código:

$this->db->last_query();

También publique la consulta que está utilizando para interactuar con MySQL, solo para confirmar que se está ejecutando exactamente la misma consulta.

CodeIgniter tiene un truco para MySQL que ajusta el informe de las filas afectadas, sin embargo, tenía la impresión de que solo era para ELIMINAR consultas. Si mira system/database/drivers/mysql/mysql_driver.php o system/database/drivers/mysqli/mysqli_driver.php (cualquiera que sea el controlador que esté usando y observe la variable var $delete_hack = TRUE; Ajuste que podría afectar su resultado, podría valer la pena intentarlo?

Usando MySQL solo - Si realizo una actualización básica a una tabla como esta:

UPDATE `SOMETABLE` SET `NAME` = ''John'' WHERE `ID` = 1;

Y el valor de NAME = '' John '' ya era '' John '' - en otras palabras - nada es nuevo, no hay nada que actualizar. MySQL devuelve " Filas afectadas: 0 (la consulta tomó 0.0007 segundos) "

Si realizo la misma llamada, ahora usando CodeIgniter, y luego recupero las filas afectadas de esta manera:

$data = array( ''NAME'' => ''John'' ); $this->db->where(''ID'', 1); $this->db->update(''SOMETABLE'', $data); $affect = $this->db->affected_rows(); echo $affect; // $affect echos 1

$ affect termina igualando 1. No tengo ningún problema con esto, solo esperaba que si no había nada que actualizar, ese codeigniter se comportaría de la misma manera que MySQL y no editaría algo que no necesita ser actualizado, y devuelve 0 para affected_rows ().

  • ¿Me he equivocado de alguna manera?
  • ¿Codeigniter sobrescribe '' John ''? ¿o no?