una query di update è eseguita correttamente anche se non modifica niente.

Devi usare mysql_affected_rows() per controllare quanti record sono stati aggiornati realmente, tenendo presente che se provi ad aggiornarli con gli stessi valori che aveva in precedenza, l'update viene ignorato.