Ti consigliamo di utilizzare la sintassi INSERT...ON DUPLICATE KEY UPDATE.
http://dev.mysql.com/doc /refman/5.1/en/insert-on-duplicate.html
Ecco un esempio che proverà a creare un record con un ID, un compleanno e un nome. Se esiste un record con il campo id, eseguirà l'aggiornamento specificato. La tabella ha molti altri campi come indirizzo e-mail, codice postale, ecc. Voglio lasciare quei campi da soli se aggiorno. (REPLACE INTO perderebbe tutti quei dati se non li includessi nell'istruzione REPLACE INTO.)
INSERT INTO user (userid,birthday,first_name,last_name)
VALUES (1234,'1980-03-07','Joe','Smith')
ON DUPLICATE KEY UPDATE
birthday = '1980-03-07',
first_name = 'Joe',
last_name = 'Smith';