Recuperare l'ulitmo id con PDO

Mattepuffo's logo
Recuperare l'ulitmo id con PDO

Recuperare l'ulitmo id con PDO

Lo scenario è questo.

Inserisco i dati in una tabella e subito dopo devo fare un inserimento in un'altra tabella collegata alla prima.

Per fare questo mi serve ovviamente l'id (inteso come campo di raccordo tra le tue tabelle) in modo da passarlo alla seconda tabella.

Per fare questo PDO ci mette a disposizione la funzione lastInsertId().

Quindi, supponendo di aver creato una classe per la connessione, possiamo iniziare da questo:

$objConn = Connessione::getInstance();

$lastRist = $objAdminConn->addSomething($par1, $par2, $par3);

$objAdminConn->addSomething2($par1, $par2, $lastRist);

Alla prima riga istanziamo la classe (che è Singleton, ma non cambia).

Nella seconda riga facciamo l'inserimento nella prima tabella e valoriziamo una variabile che poi passiamo alla riga successiva come parametro per l'inserimento nella tabella collegata.

La particolarità, se così si può dire, sta in addSomething(), che in pratica è così:

public function addSomething($par1, $par2, $par3) {
        $cmd = 'INSERT INTO some_table VALUES(?,?,?,?)';
        try {
            $prepare = $this->pdo->prepare($cmd);
            $prepare->execute(array(
               NULL, // VALORE PER L'ID AUTOINCREMENT
               $par1,
               $par2,
               $par3
            ));
            return $this->pdo->lastInsertId();
        } catch (PDOException $e) {
            echo '<p class="error">' . $e->getMessage() . '</p>';
            die();
        }
    }

Rispetto ad una funzione di inserimento "classica, questa ha un valore di ritorno, che corrisponde all'ultimo record inserito.

Questo valore lo recuperiamo tramite la funzione lastInsertId().

Tralasciando le difficoltà legate al mettere tutto insieme per non poter spiegare ogni volta connessione, inserimento, ecc....(che ho comunque spiegato in altri articoli) direi che la cosa è abbastanza semplice!!


Condividi

Commentami!