Recuperare ultimo ID inserito

  • Creatore Discussione Creatore Discussione Nik
  • Data di inizio Data di inizio

Nik

Utente Attivo
15 Set 2004
92
1
8
34
Ciao ragazzi,
con il codice seguente inserisco delle informazioni in una tabella nel mio database Mysql:

PHP:
$sqlcmd = " INSERT INTO MenuSitoWeb VALUES ";
$sqlcmd .= " (null,'$url','$target','$navigatore','$visibile','$sottomenu','$posizione','$ID_Login', '$idfotocopertina') ";
mysql_query($sqlcmd);

Ho la necessità di recuperare l'ultimo ID inserito in questa specifica tabella per poterlo utilizzare subito dopo in un altro inserimento. Come faccio?

Ho provato ad utilizzare la funzione mysqli_insert_id(); seguendo il manuale di riferimento ma sicuramente la scrivo in modo scorretto:

PHP:
$prova = mysqli_insert_id($conn);
echo $prova;

Dove $conn è la variabile che utilizzo per la connessione al database.

Quando utilizzo questo codice ricevo questa notifica:
Warning: mysqli_insert_id() expects parameter 1 to be mysqli
 
Non so se la soluzione che ho trovato è molto corretta.. però funziona!

PHP:
$sqlcmd_ultimoid = "SELECT ID FROM MenuSitoWeb ORDER BY ID DESC LIMIT 1";
$risultato_ultimoid = mysql_query($sqlcmd_ultimoid);
$row_ultimoid = mysql_fetch_array($risultato_ultimoid);
$ULTIMOIDINSERITO = $row_ultimoid["ID"];
 
Ciao, l'errore è causato dal fatto che stai usando due moduli differenti per interrogare il database mysql.

Quella con cui svolgi la query è l'estensione mysql.
PHP:
mysql_query($sqlcmd);

Quella con cui provi a richiedere l'ultimo id inserito nella tabella invece è mysqli
PHP:
$prova = mysqli_insert_id($conn);


Chiaramente, le due estensioni non sono compatibili fra loro, di conseguenza dovresti usare la funzione mysql_insert_id():
PHP:
$prova = mysql_insert_id($conn);

Questo dovrebbe risolvere più comodamente il problema.


Come ultimo appunto, ti vorrei far notare che il modulo mysql è deprecato e in futuro sarà rimosso da PHP (come si può leggere dalle pagine della documentazione ufficiale).
Se ne hai la possibilità, ti suggerisco di cambiarlo e passare a mysqli.
 

Discussioni simili