Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    40

    Recupero valore auto_increment di mysql

    Ovviamente l'argomento sarà stato trattata e ritrattato in abbondanza e premetto che ho già fatto una ricerca in rete, ma non mi fido molto di quello che ho letto.
    Ovviamente a me serve recuperare l'ultimo id autoincrementale inserito in una tabella ed ho visto che c'è paresempio la funzione LAST_INSERT_ID() che fa questa cosa.

    Quello che mi chiedo è però è come è gestita questa funzione, ovvero: se io inserisco un record in una tabella (mettiamo di angarafica) e vado a recuperare l'ultimo id inserito, ma non faccio una commit ancora, un altro utente che fa la stessa cosa contemporaneamente vede comunque l'ultimo id incrementato nonostante la commit non sia stata ancora fatta?

    Altra cosa...mi pare di aver capito che questa funziona fa riferimento all'ultima insert inserita, ma mettiamo che contemporaneamente un utente faccia un inserimento in anagrafica e un altro utente in un altra tabbella com un altro valore auto_increment...la funzione LAST_INSERT_ID() riesce a distinguere i due casi e restituire quindi due valori calcolati in base alle due differenti tabelle? Oppure no?

    Avete da consigliarmi altri metodi per recuperare univocamente un id di una tabella in modo sicuro? Spero di essere stato chiaro nelle mie domande...

    Grazie mille!

  2. #2
    utilizza http://it2.php.net/manual/it/functio...-insert-id.php

    e specifica sempre la connessione attuale così sarai sicuro che restituirà sempre l'id corretto...

    nel caso delle transazioni dovrebbe comunque funzionare restituendoti l'id che verrà utilizzato all'atto del commit
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    40
    Come faccio a specificargli la connessione?

    Ho fatto una funzione che restituisce l'ultimo id inserito ed è la seguente:

    Codice PHP:
    function getLastInsertId() {
          return 
    mysql_insert_id($this->mysqli);
      } 
    dove mysqli è un oggetto connessione della classe corrente definito in questo modo

    Codice PHP:
    $this->mysqli = new mysqli($this->getHost(), $this->getUtente(), $this->getPassword(), $this->getDb()); 
    Solo che mi da errore quando rihiamo questa funzione e mi dice:

    Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in <bla bla bla>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    40
    Ok, ho risolto, il codice corretto è questo:

    Codice PHP:
    function getLastInsertId() {
        return 
    $this->mysqli->insert_id;

    Spero possa essere utile a qualcuno e spero che effettivamente l'ID recuperato in questo modo sia correttamente gestito a livello transazionale...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.