Jetez un oeil à mysql_affected_rows()
Il devrait vous dire si quelque chose a été réellement mis à jour, par opposition à rien n'a été mis à jour avec succès, ce qui entraîne le retour de true.
php.net dit :
Vous pouvez utiliser les éléments suivants pour obtenir les résultats souhaités :
if($this->db->affected_rows() >= 0){ }