PHP Récupérer les résultats de Mysql avec PDO

Habdul Hazeez 30 janvier 2023
  1. Configurer une base de données
  2. Récupérer les résultats avec pdostatement.fetchall() en PHP
  3. Récupérer les résultats en itérant sur l’instruction PDO en PHP
  4. Récupérer les résultats avec la méthode PDO fetch() en PHP
  5. Prétraiter les résultats de la méthode PDO fetch()
PHP Récupérer les résultats de Mysql avec PDO

PHP PDO vous permet de travailler avec plusieurs bases de données via une interface uniforme. Il simplifie les opérations de base de données de routine telles que la récupération des résultats.

Ce didacticiel explique comment récupérer plusieurs résultats renvoyés par une instruction PDO. Vous utiliserez PDOStatement.fetchAll, l’itération de tableau et la méthode fetch() dans une boucle while.

Configurer une base de données

Pour ce tutoriel, vous aurez besoin d’une base de données MySQL pour suivre. Téléchargez et installez le serveur XAMPP. Lancez le panneau de configuration XAMPP et connectez-vous au shell MySQL.

# This login command assumes that the
# password is empty and the user is "root"
mysql -u root -p

Utilisez la requête SQL suivante pour créer une base de données appelée fruit_db.

CREATE database fruit_db;

Production :

Query OK, 1 row affected (0.001 sec)

Pour créer un exemple de données avec lequel vous pouvez travailler, exécutez le SQL suivant sur la base de données fruit_db :

CREATE TABLE fruit
(id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(20) NOT NULL,
 color VARCHAR(20) NOT NULL,
 PRIMARY KEY (id))
 ENGINE = InnoDB;

Production :

Query OK, 0 rows affected (0.028 sec)

Confirmez que les tables existent avec ce qui suit :

DESC fruit;

Production :

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | NO   |     | NULL    |                |
| color | varchar(20) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

Une fois la table configurée, utilisez le SQL suivant pour insérer un exemple de données :

INSERT INTO fruit (id, name, color) VALUES (NULL, 'Banana', 'Yellow'), (NULL, 'Pineapple', 'Green')

Confirmez l’existence des données avec le SQL suivant :

SELECT * FROM fruit;

Production :

+----+-----------+--------+
| id | name      | color  |
+----+-----------+--------+
|  1 | Banana    | Yellow |
|  2 | Pineapple | Green  |
+----+-----------+--------+

Maintenant, vous pouvez récupérer le résultat depuis PHP.

Récupérer les résultats avec pdostatement.fetchall() en PHP

Avant de pouvoir récupérer les résultats avec PDOStament.fetchAll(), vous devez vous connecter à la base de données que vous avez créée précédemment. Créez un fichier nommé config.php, et placez le code suivant ; si votre nom d’utilisateur et votre mot de passe de base de données sont différents, remplacez-les.

<?php
    # If necessary, replace the values for the
    # user and password variables
    $host = 'localhost';
	$database = 'fruit_db';
	$user = 'root';
	$password = '';
?>

Lorsque vous souhaitez récupérer le résultat de la base de données dans un fichier, vous devez importer le config.php.

Créez un autre fichier nommé fetchpdo.php. Dans le fichier, vous effectuerez les opérations suivantes :

  • Connectez-vous à la base de données.
  • Créer une nouvelle connexion PDO.
  • Créez une instruction SQL préparée avec la méthode prepare().
  • Exécute l’instruction.
  • Récupérer le résultat avec la méthode fetchAll().

Maintenant, tapez le code suivant dans fetchpdo.php.

<?php
    // Require the config file. It contains
	// the database connection
	require ('config.php');

	// Create a connection string
	$database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

	// Create a new PDO instance
	$pdo = new PDO($database_connection, $user, $password);

	// Prepare a SQL statement
	$statement = $pdo->prepare('SELECT name, color FROM fruit');

	// Execute the statement
	$statement->execute();

    // Fetch the results
    print("Fetch the result set:\n");
    $result = $statement->fetchAll(\PDO::FETCH_ASSOC);
    print "<pre>";
    print_r($result);
    print "</pre>";
?>

Production :

Array
(
    [0] => Array
        (
            [name] => Banana
            [color] => Yellow
        )

    [1] => Array
        (
            [name] => Pineapple
            [color] => Green
        )

)

Récupérer les résultats en itérant sur l’instruction PDO en PHP

Une fois que vous avez exécuté l’instruction SQL préparée, vous pouvez parcourir le résultat avec une boucle while. Vous trouverez des détails dans le bloc de code suivant.

<?php
    // Require the config file. It contains
    // the database connection
    require ('config.php');

    // Create a connection string
    $database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

    // Create a new PDO instance
    $pdo = new PDO($database_connection, $user, $password);

    // Prepare a SQL statement
    $statement = $pdo->prepare('SELECT name, color FROM fruit');

    // Execute the statement
    $statement->execute(array());

    // Iterate over the array
    foreach($statement as $row) {
        echo $row['name'] . "<br />";
    }
?>

Production :

Banana
Pineapple

Récupérer les résultats avec la méthode PDO fetch() en PHP

La méthode fetch() récupère la ligne suivante à partir d’un résultat. Il vous permet de l’utiliser dans une boucle while.

Les détails sont dans le bloc de code suivant.

<?php
    // Require the config file. It contains
    // the database connection
    require ('config.php');

    // Create a connection string
    $database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

    // Create a new PDO instance
    $pdo = new PDO($database_connection, $user, $password);

    // Prepare a SQL statement
    $statement = $pdo->prepare('SELECT name, color FROM fruit');

    // Execute the statement
    $statement->execute(array());

    // Use while loop over the array
    while ($row = $statement->fetch()) {
        echo $row['name'] . "<br />";
    }
?>

Prétraiter les résultats de la méthode PDO fetch()

Si vous préférez prétraiter les données de la base de données, vous pouvez utiliser la boucle while. Stockez ensuite les résultats traités dans un tableau. Le code suivant vous montre comment procéder.

<?php
    
    // Require the config file. It contains
    // the database connection
    require ('config.php');

    // Create a connection string
    $database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

    // Create a new PDO instance
    $pdo = new PDO($database_connection, $user, $password);

    // Create an empty array to store the results
    $result = [];

    // Prepare a SQL statement
    $statement = $pdo->prepare('SELECT name, color FROM fruit');

    // Execute the statement
    $statement->execute(array());

    // Iterate over the result and assign
    // new names to the table rows
    while ($row = $statement->fetch()) {
        $result[] = [
            'Fruit Name' => $row['name'],
            'Fruit Color' => $row['color'],
        ];
    }

    print "<pre>";
    print_r($result);
    print "</pre>";
?>

Production :

Array
(
    [0] => Array
        (
            [Fruit Name] => Banana
            [Fruit Color] => Yellow
        )

    [1] => Array
        (
            [Fruit Name] => Pineapple
            [Fruit Color] => Green
        )

)
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn