Intente obtener la consulta que CodeIgniter 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 era solo para consultas DELETE. Si observa system/database/drivers/mysql/mysql_driver.php
o system/database/drivers/mysqli/mysqli_driver.php
(cualquiera que sea el controlador que esté usando y mire la variable var $delete_hack = TRUE;
. Ajustar eso podría afectar su resultado, ¿podría valer la pena intentarlo?