Sei fuori strada.

Quando fai un comando sql di update, indichi al server MySql quali righe devono essere variate e quali sono i nuovi valori che devono assumere.
Per fare un'ipotesi semplice, diciamo che la tua tabella contiene 100 righe, delle quali 60 rientrano nella selezione di quelle che hai indicato come "da modificare". Può capitare però che 20 di queste 60 abbiano già i valori uguali a quelli che tu hai indicato come nuovi valori da assumere.
In questo caso, mysql_affected_rows() restituirà 40 e non 60, perché sono 40 le righe effettivamente modificate, anche se erano 60 a rientrare nella condizione espressa dalla clausola WHERE.

Per quanto riguarda le "query fallite", non è certo a questa funzione che devi affidarti per scoprire se qualcosa è andato storto.
Quando si lancia una funzione mysql è buona norma (da seguire rigorosamente, come già detto migliaia di volte su questo forum) utilizzare SEMPRE la forma

Codice PHP:
mysql_query($query,$connessione) or die(mysql_error()); 
E questo, ribadisco, per ogni comando sql, non solo per l'esecuzione di una query.
In questo modo avrai sempre immediatamente la percezione di cosa è andato male e perché.

Per finire, la possibilità di modificare quel comportamento di mysql_affected_rows(), di cui parla quell'articolo, è qualcosa di cui non avevo mai sentito parlare, e di cui non trovo traccia sul sito di php. La pagina della funzione mysql_connect() fa riferimento ad un quinto parametro che contiene flags utente, ma nessuno di questi si riferisce al risultato di mysql_affected_rows(). In sostanza, non conterei troppo su questa possibilità.