PHP & MySQL – Inserire una tupla e ottenerne l’ID
Riprendiamo la rubrica sulla programmazione lato web con una best practice banale e sottovalutata quando si lavora con database e php.
Recentemente leggendo i sorgenti di alcuni importanti plugin ho notato la presenza di cattive usanze e abitudini di programmazione. L’immissione di una nuova tupla in un database, l’operazione più banale e scontata nelle applicazioni web porta spesso a problemi dovuti a condizioni di concorrenza (race condition).
Il modo corretto di immettere una tupla in un DB Mysql e ottenerne l’id (assegnato dal DB, perchè chiave con attributo Auto Increment) è questo:
mysql_query("INSERT INTO tabella (1, 2, 'ciao come va')"); $id = mysql_insert_id(); |
NON usando in alcun modo query di questo tipo per ottenere l’id:
SELECT MAX(id) FROM tabella; |
che può portare a risultati erronei nel caso vi siano situazioni d’immissione simultanee.
Vi consigliamo di leggere la documentazione ufficiale relativa alla funzione mysql_insert_id().
Commenti