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().