Perche' affected_row torna il numero di record modificati e anche se la query viene eseguita ma i valori non cambiano le modifiche effettive non ci sono state perche' i dati sono identici.

Se non error torna 0 se non ci sono modifiche e potresti usarlo al posto di 1 o cmq nell if controlli che sia 0 o superiore.

se -1(fallisce allora fai il resto)

edit http://www.php.net/manual/en/functio...ected-rows.php se guardi qui alla fine lo dice. In caso di nessun cambiamento puo' non tornare il numero di record