Il logo del sito

Appunti sull'interfaccia di PHP con MySQL

PHP MySQL Database

§ 6. MySQL Get LastID

Dopo aver eseguito un INSERT o un UPDATE in una tabella con un campo AUTO_INCREMENT, possiamo ottenere l'ID dell'ultimo record inserito o aggiornato.

nelle tabelle MyGuest_1, MyGuest_2, e MyGuest_3, la colonna "id" è un campo AUTO_INCREMENT. :

§ 6.1 Ottenere l'ultimo record inserito nelle tabelle MySQL usando MySQLi e PDO

Gli esempi che seguono sono identici a quelli della sezione precedente con la sola aggiunta di una linea di codice per recuperare l'ID dell'ultimo record inserito e visualizzarlo

§ 6.1.1 Ottenere l'ultimo record inserito in MyGuest_1 con MySQLi object-oriented

<?php
   $servername = "127.0.0.1";
   $username = "mioUserName";
   $password = "miaPassword";
   $dbname = "myDB";
   $sql = "INSERT INTO MyGuest_1(
      firstname, lastname, email)
      VALUES('Giorgio', 'Neri', 'giorgioBlack@pip.com')";
   // Create connection 
   $conn = new mysqli($servername, $username, 
      $password, $dbname);
   // Check connection
   if ($conn->connect_error){
      die("Connection failed: " . $conn-> connect_error);
   }
   echo "<p class=phpoutput> Connessione mysqli object-oriented riuscita. </p>;
   // create new record
   if ($conn->query($sql)==TRUE){
      echo "<p class=phpoutput > Nuovo record creato con successo </p>";
      $last_id = $conn->insert_id;
      echo "<p class=phpoutput > Last inserted ID is: " . $last_id . "</p>";      
   } else {
      echo "<p class=phpoutput > 
      Errore nella creazione del nuovo record: "
         . $conn->error . "</p>";
   }
   $conn->close();
?>             

Connessione mysqli object-oriented riuscita.

Nuovo record creato con successo

Last inserted ID is: 8581

La tabella MyGuest_1 l'ho inserita nel mio unico database disponile. Naturalmente nel codice php che ? stato eseguito ho sostituito "mioUserName", "miaPassword", e "myDB" con i valori propri del mio database.

§ 6.1.2 Ottenere l'ultimo record inserito in MyGuest_2 con MySQLi procedural

   <?php
      $servername = "127.0.0.1";
      $username = "mioUserName";
      $password = "miaPassword";
      $dbname = "myDB";
      $sql = "INSERT INTO MyGuest_2(
         firstname, lastname, email)
         VALUES('Roberto', 'Rossi', 'robertoRed@pip.com')";
   // Create connection 
      $conn = new mysqli($servername, $username, $password, $dbname);
   // Check connection
      if (!$conn){
         die("Connection failed: " . mysqli_connect_error);
      }
      echo "<p class=phpoutput> Connessione mysqli procedural riuscita. </p>;
      // Create new record
      if (mysqli_query($conn, $sql)) {
         echo "<p class=phpoutput > Nuovo record creato con successo</p>";
         $last_id = mysqli_insert_id($conn);
         echo "<p class=phpoutput > Last inserted ID is: " . $last_id . "</p>";      
      } else {
         echo "<p class=phpoutput > 
              Errore nella creazione del nuovo record: "
         . mysqli_error($conn) . "</p>";
      }
      mysqli_close($conn);
   ?>             

Connessione mysqli procedural riuscita

Nuovo record creato con successo

Last inserted ID is: 4

La tabella MyGuest_2 l'ho inserita nel mio unico database disponile. Naturalmente nel codice php che ? stato eseguito ho sostituito "mioUserName", "miaPassword", e "myDB" con i valori propri del mio database.

§ 6.1.2 Ottenere l'ultimo record inserito in MyGuest_3 con PDO

   <?php
      $servername = "127.0.0.1";
      $username = "mioUserName";
      $password = "miaPassword";
      $conn = null;
      $dbname = "myDB";
      $sql = "INSERT INTO MyGuest_3(
         firstname, lastname, email)
         VALUES('Filippo', 'Verdi', 'filippoGreen@pip.com')";
      try{
         $conn = new PDO("mysql:host=$servername; dbname=$dbname",
                 $username, $password);
         $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         echo "<p class=phpoutput> Connessione pdo riuscita. </p>";
         // use exec() because no results are returned
         $conn->exec($sql);
         echo "<p class=phpoutput > Tabella myGuest_3 creata con successo</p>";
         $last_id = $conn->lastInsertId();
         echo "<p class=phpoutput > Last inserted ID is: " . $last_id . "</p>";      
         }
      catch(PDOException $e){
         echo "<p class=phpoutput >". $sql. "</p>";
         echo "<p class=phpoutput >". $e->getMessage(). "</p>";
      }
      if ($conn != null){
         $conn = null;
      } 
   ?>                       

Connessione pdo riuscita

Record creato con successo

Last inserted ID is: 4

La tabella MyGuest_3 l'ho inserita nel mio unico database disponile. Naturalmente nel codice php che ? stato eseguito ho sostituito "mioUserName", "miaPassword", e "myDB" con i valori propri del mio database.