Il logo del sito

Appunti sull'interfaccia di PHP con MySQL

Traduzione da MySQL Select Data

PHP MySQL Database

§ 9. MySQL Select Data

Per recuperate dati da una o più tabelle si utilizza lo statement SELECT:

SELECT column_mame(s) FROM table_name

per recuperate tutte le colonne di una tabella possiamo usare il carattere "*":

SELECT * FROM table_name

§ 9.1. Select con MySQLi object-oriented


   <?php
      include 'infoConnessione.php'    
   // SQL per SELECT
   
      $sql = "SELECT id, firstname, lastname, email, reg_data FROM MyGuest_1";

   // Create connection 
   
      $conn = new mysqli($servename, $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>;
      
   // Excecute query
   
      $result = $conn->query($sql);

   // Check for resultset not empty.
   
      if ($result->num_rows > 0){
      
      // Loop through recordset   

         while($row = $result->fetch_assoc()){
            echo ". $row["id"]. " " . $row["firstname"] . " " .$row["lastname"]. " "
            .$row["email"]. " " .$row["reg_date"]";
         }
      } else {
         echo "<p class=phpoutput> 
              0 results </p>";
      }
      
   // Close connection
   
      $conn->close();
   ?>             

Connessione mysqli object-oriented riuscita.

1 Giorgio Pippo giorgioBlack@pip.com 2021-01-30 18:15:56

11890 John Doe john@example.com 2025-10-21 22:15:32

11891 Mary Moe mary@example.com 2025-10-21 22:15:32

11892 Julie Dooley julie@example.com 2025-10-21 22:15:32

11893 Giorgio Neri giorgioBlack@pip.com 2025-10-22 03:40:54

11894 Antonio Esposito antonioEsposito@pip.com 2025-10-22 04:10:34

11895 Salvatore Soria salvatoreSoria@pip.com 2025-10-22 04:10:34

11896 Leopoldo Burzo leopoldoBurzo@pip.com 2025-10-22 04:10:34

11897 Giorgio Neri giorgioBlack@pip.com 2025-10-22 05:40:48

11898 Giorgio Neri giorgioBlack@pip.com 2025-10-22 18:56:37

11899 John Doe john@example.com 2025-10-22 19:15:03

11900 Mary Moe mary@example.com 2025-10-22 19:15:03

11901 Julie Dooley julie@example.com 2025-10-22 19:15:03

11902 John Doe john@example.com 2025-10-23 02:06:14

11903 Mary Moe mary@example.com 2025-10-23 02:06:14

11904 Julie Dooley julie@example.com 2025-10-23 02:06:14

11905 John Doe john@example.com 2025-10-23 11:43:09

11906 Mary Moe mary@example.com 2025-10-23 11:43:09

11907 Julie Dooley julie@example.com 2025-10-23 11:43:09

11908 Giorgio Neri giorgioBlack@pip.com 2025-10-23 11:43:54

§ 9.2. Select con MySQLi procedural


   <?php
   include 'infoConnessione.php';
      
   // SQL per SELECT
   
      $sql = "SELECT id, firstname, lastname, email, reg_date FROM MyGuest_2";

   // Create connection 
   
      $conn = new mysqli($servename, $username, $password, $dbname);
      
   // Check connection
      if (!$conn){
         die("Connection failed: " . mysqli_connect_error);
      }
      echo "<p class=phpoutput> Connessione mysqli procedural riuscita. </p>;
      
   // Excecute query
   
      $result = mysqli_query($conn, $sql);

   // Check for resultset not empty.
   
      if (mysqli_num_rows($result) > 0) {
 
   // Loop through recordset   

         while($row = mysqli_fetch_assoc($result)){
            echo ". $row["id"]. " " . $row["firstname"] . " " .$row["lastname"]. " "
                  .$row["email"]. " " .$row["reg_date"]";
         }
      } else {
         echo "<p class=phpoutput> 
              0 results </p>";
      }
      
   // Close connection
   
      mysqlì_close($conn);        
   ?>             

Connessione mysqli procedural riuscita

0 results

§ 9.3. Select con PDO

In questo paragrafo ho fatto qualche modifica rispetto all'esempio di w3schools. Arriverò all'esempio di w3schools gradualmente.

§ 9.3.1 Select con PDO usando il metodo query()

   <?php
      include 'infoConnessione.php';
      $conn = null;
      
   // SQL per SELECT
   
      $sql = "SELECT id, firstname, lastname, email, reg_date FROM MyGuest_3";

      try{
   // Create connection
   
         $conn = new PDO("mysql:host=$servername; dbname=$dbname",
                 $username, $password);
                 
   // Set attribute
   
         $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
         
         echo "<p class=phpoutput> Connessione pdo riuscita </p>";
         
   // Execute query 
   
           $result = $conn->query($sql);         
         
   // Check for resultset not empty.  
   
         if (count($result)> 0){  
         
            // Loop through recordset   
            
            foreach($result as $row){
               echo "<p class=phpoutput>". $row["id"]. " " . $row["firstname"] . " "
                  .$row["lastname"]. " " .$row["email"]. " " .$row["reg_date"]. "<p>";
            }
         } else {
            echo "<p class=phpoutput> 0 results </p>";
         }      
     }
      catch(PDOException $e){
         echo "<p class=phpoutput >". $sql. "</p>";
         echo "<p class=phpoutput >". $e->getMessage(). "</p>";
      }
      
   // Close connection
   
      if ($conn != null){
         $conn = null;
      } 
   ?>                       

Connessione pdo riuscita

1 John Doe john@example.com 2025-10-21 22:15:32

2 Mary Moe mary@example.com 2025-10-21 22:15:32

3 Julie Dooley julie@example.com 2025-10-21 22:15:32

4 Filippo Verdi filippoGreen@pip.com 2025-10-22 03:40:54

5 Antonio Esposito antonioEsposito@pip.com 2025-10-22 04:10:34

6 Salvatore Soria salvatoreSoria@pip.com 2025-10-22 04:10:34

7 Leopoldo Burzo leopoldoBurzo@pip.com 2025-10-22 04:10:34

8 Filippo Verdi filippoGreen@pip.com 2025-10-22 05:40:48

9 Filippo Verdi filippoGreen@pip.com 2025-10-22 18:56:37

10 John Doe john@example.com 2025-10-22 19:15:03

11 Mary Moe mary@example.com 2025-10-22 19:15:03

12 Julie Dooley julie@example.com 2025-10-22 19:15:03

13 John Doe john@example.com 2025-10-23 02:06:14

14 Mary Moe mary@example.com 2025-10-23 02:06:14

15 Julie Dooley julie@example.com 2025-10-23 02:06:14

16 John Doe john@example.com 2025-10-23 11:43:09

17 Mary Moe mary@example.com 2025-10-23 11:43:09

18 Julie Dooley julie@example.com 2025-10-23 11:43:09

19 Filippo Verdi filippoGreen@pip.com 2025-10-23 11:43:54

§ 9.3.2 Select con PDO usando uno statement precompilato

   <?php
      include 'infoConnessione.php';
      $conn = null;
      
   // SQL per SELECT
   
      $sql = "SELECT id, firstname, lastname, email, reg_date FROM MyGuest_3";

      try{
   // Create connection
   
         $conn = new PDO("mysql:host=$servername; dbname=$dbname",
                 $username, $password);
                 
   // Prepare statement  
   
         $stmt = $conn->prepare($sql);
         
   // Execute statement  
   
         $stmt->execute();
         
   // Set the resulting array to associative
   
         $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
         
   // Load the resulting array
   
         $result = $stmt->fetchAll(); 
         
   // Check for resultset not empty.  
   
         if (count($result)> 0){  
         
            // Loop through recordset   
            
            foreach($result as $row){
               echo "<p class=phpoutput>". $row["id"]. " " . $row["firstname"] . " "
                  .$row["lastname"]. " " .$row["email"]. " " .$row["reg_date"]. "<p>";
            }
         } else {
            echo "<p class=phpoutput> 0 results </p>";
         }      
     }
      catch(PDOException $e){
         echo "<p class=phpoutput >". $sql. "</p>";
         echo "<p class=phpoutput >". $e->getMessage(). "</p>";
      }
      
   // Close connection
   
      if ($conn != null){
         $conn = null;
      } 
   ?>                       

Connessione pdo riuscita

1 John Doe john@example.com 2025-10-21 22:15:32

2 Mary Moe mary@example.com 2025-10-21 22:15:32

3 Julie Dooley julie@example.com 2025-10-21 22:15:32

4 Filippo Verdi filippoGreen@pip.com 2025-10-22 03:40:54

5 Antonio Esposito antonioEsposito@pip.com 2025-10-22 04:10:34

6 Salvatore Soria salvatoreSoria@pip.com 2025-10-22 04:10:34

7 Leopoldo Burzo leopoldoBurzo@pip.com 2025-10-22 04:10:34

8 Filippo Verdi filippoGreen@pip.com 2025-10-22 05:40:48

9 Filippo Verdi filippoGreen@pip.com 2025-10-22 18:56:37

10 John Doe john@example.com 2025-10-22 19:15:03

11 Mary Moe mary@example.com 2025-10-22 19:15:03

12 Julie Dooley julie@example.com 2025-10-22 19:15:03

13 John Doe john@example.com 2025-10-23 02:06:14

14 Mary Moe mary@example.com 2025-10-23 02:06:14

15 Julie Dooley julie@example.com 2025-10-23 02:06:14

16 John Doe john@example.com 2025-10-23 11:43:09

17 Mary Moe mary@example.com 2025-10-23 11:43:09

18 Julie Dooley julie@example.com 2025-10-23 11:43:09

19 Filippo Verdi filippoGreen@pip.com 2025-10-23 11:43:54

§ 9.3.3 Select con PDO usando uno statement precompilato e presentando il resultset in una tabella

<?php

   echo "<table style='border: solid 1px black;'>";
   echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

   class TableRows extends RecursiveIteratorIterator { 
      function __construct($it) { 
         parent::__construct($it, self::LEAVES_ONLY); 
      }

      function current() {
         return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
      }

      function beginChildren() { 
         echo "<tr>"; 
      } 

      function endChildren() { 
         echo "</tr>" . "\n";
      } 
   } 
   
   include 'infoConnessione.php';
   $conn = null;
      
// SQL per SELECT
   
   $sql = "SELECT id, firstname, lastname, email, reg_date FROM MyGuest_3";

   try{
   // Create connection
   
      $conn = new PDO("mysql:host=$servername; dbname=$dbname",
         $username, $password);
                 
   // Prepare statement  
   
      $stmt = $conn->prepare($sql);
         
   // Execute statement  
   
      $stmt->execute();
         
   // Set the resulting array to associative
   
      $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
   
      foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
         echo $v;
      }
   }
   catch(PDOException $e){
      echo "<p class=phpoutput >". $sql. "</p>";
      echo "<p class=phpoutput >". $e->getMessage(). "</p>";
   }
      
   // Close connection
   
   if ($conn != null){
      $conn = null;
   } 
?>                       

Connessione pdo riuscita

Notare come il risultato della select sia visualizzato solo dopo il completamento del codice HTML della pagina. Vedremo in seguito come evitare questo comportamento.

IdFirstnameLastnameE-mailreg_date
1JohnDoejohn@example.com2025-10-21 22:15:32
2MaryMoemary@example.com2025-10-21 22:15:32
3JulieDooleyjulie@example.com2025-10-21 22:15:32
4FilippoVerdifilippoGreen@pip.com2025-10-22 03:40:54
5AntonioEspositoantonioEsposito@pip.com2025-10-22 04:10:34
6SalvatoreSoriasalvatoreSoria@pip.com2025-10-22 04:10:34
7LeopoldoBurzoleopoldoBurzo@pip.com2025-10-22 04:10:34
8FilippoVerdifilippoGreen@pip.com2025-10-22 05:40:48
9FilippoVerdifilippoGreen@pip.com2025-10-22 18:56:37
10JohnDoejohn@example.com2025-10-22 19:15:03
11MaryMoemary@example.com2025-10-22 19:15:03
12JulieDooleyjulie@example.com2025-10-22 19:15:03
13JohnDoejohn@example.com2025-10-23 02:06:14
14MaryMoemary@example.com2025-10-23 02:06:14
15JulieDooleyjulie@example.com2025-10-23 02:06:14
16JohnDoejohn@example.com2025-10-23 11:43:09
17MaryMoemary@example.com2025-10-23 11:43:09
18JulieDooleyjulie@example.com2025-10-23 11:43:09
19FilippoVerdifilippoGreen@pip.com2025-10-23 11:43:54