Quel tizio usa LAST_INSERT_ID() che e' una funzione di mysql SERVER che rende sempre l'ultimo id inserito. Da qualunque CLIENT esso sia stato eseguito, quindi serve il blocco della tabella.Originariamente inviato da EvilBoy
Perchè sul link che mi hai mandato c'è un tizio che fa il lock?
?>codice:<? mysql_query("LOCK TABLES apc_forms WRITE"); mysql_query("SET AUTOCOMMIT = 0"); mysql_query("INSERT INTO apc_forms (form_title, form_event_id, form_expirey) VALUES ('title',1,'2005-10-10')"); define('ID',mysql_query("SELECT LAST_INSERT_ID()")); mysql_query("COMMIT"); mysql_query("UNLOCK TABLES");
mysql_insert_id() e' una funzione del CLIENT mysql installato su php. Rileva esclusivamente l'id inserito dallo stesso CLIENT e se accompagnato dal resource id# della connessione esclusivamente da questa. Deve essere eseguito dopo un INSERT e assolutamente prima di qualsiasi altra query (il valore sarebbe zero o errato).
Sarebbe (e') necessario assicurarsi di almeno una delle due cose(o anche entrambe):
mysql_query("INSERT ... ) ha reso il valore 1. Se rendesse zero fermare con errore l'esecuzione dello script.
mysql_insert_id($conn) ha reso un valore > 0. Se rendesse zero fermare con errore l'esecuzione dello script.
ps.: quella query che hai segnalato e' pure senza controllo. Se l'INSERT dovesse fallire per qualsiasi ragione si andrebbe a leggere l'ultimo id inserito da chissa' chi.....![]()


Rispondi quotando