• User

    Recuperare ultimo ID inserito

    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);[/PHP]

    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;[/PHP]

    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


  • User

    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"];[/PHP]


  • Moderatore

    Ciao Nicole,
    ecco a te la funzione allineata al tuo metodo di realizzazione query (quello con mysql_ per intenderci) che però ti invito a rivalutare in quanto deprecato ed in futuro rimosso da PHP.

    http://php.net/manual/en/function.mysql-insert-id.php

    Ti consiglio di iniziare a studiare il passaggio della gestione del database a PDO.

    Saluti


  • User Attivo

    L'errore è semplicemente che non puoi mischiare mysql e mysqli.
    Devi usare sempre o uno o l'altro in base a quello che hai usato nel file di connessione.
    Usa mysql_insert_id() e vedrai che funziona.

    Però, come detto da Shad, sarebbe da usare sempre mysqli e dimenticarsi di mysql.