PHP ruft MySQL-Ergebnisse mit PDO ab

Habdul Hazeez 30 Januar 2023
  1. Einrichten einer Datenbank
  2. Ergebnisse abrufen mit pdostatement.fetchall() in PHP
  3. Abrufen von Ergebnissen durch Iterieren über die PDO-Anweisung in PHP
  4. Abrufen von Ergebnissen mit der PDO-Methode fetch() in PHP
  5. Ergebnisse der PDO-Methode fetch() vorverarbeiten
PHP ruft MySQL-Ergebnisse mit PDO ab

Mit PHP PDO können Sie über eine einheitliche Oberfläche mit mehreren Datenbanken arbeiten. Es vereinfacht routinemäßige Datenbankoperationen wie das Abrufen von Ergebnissen.

In diesem Tutorial wird erläutert, wie Sie mehrere Ergebnisse abrufen, die von einer PDO-Anweisung zurückgegeben werden. Sie verwenden PDOStatement.fetchAll, Array-Iteration und die Methode fetch() in einer while-Schleife.

Einrichten einer Datenbank

Für dieses Tutorial benötigen Sie eine MySQL-Datenbank, um mitzumachen. Laden Sie den XAMPP-Server herunter und installieren Sie ihn. Starten Sie das XAMPP Control Panel und melden Sie sich bei der MySQL-Shell an.

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

Verwenden Sie die folgende SQL-Abfrage, um eine Datenbank namens fruit_db zu erstellen.

CREATE database fruit_db;

Ausgabe:

Query OK, 1 row affected (0.001 sec)

Um Beispieldaten zu erstellen, mit denen Sie arbeiten können, führen Sie die folgende SQL in der Datenbank fruit_db aus:

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

Ausgabe:

Query OK, 0 rows affected (0.028 sec)

Bestätigen Sie, dass die Tabellen mit Folgendem vorhanden sind:

DESC fruit;

Ausgabe:

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

Sobald die Tabelle eingerichtet ist, verwenden Sie die folgende SQL, um Beispieldaten einzufügen:

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

Bestätigen Sie die Datenexistenz mit dem folgenden SQL:

SELECT * FROM fruit;

Ausgabe:

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

Jetzt können Sie das Ergebnis von PHP abrufen.

Ergebnisse abrufen mit pdostatement.fetchall() in PHP

Bevor Sie Ergebnisse mit PDOStament.fetchAll() abrufen können, müssen Sie sich mit der zuvor erstellten Datenbank verbinden. Erstellen Sie eine Datei namens config.php und platzieren Sie den folgenden Code; Wenn Ihr Datenbank-Benutzername und Ihr Passwort unterschiedlich sind, ersetzen Sie sie.

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

Wenn Sie das Datenbankergebnis in eine Datei holen möchten, müssen Sie die config.php importieren.

Erstellen Sie eine weitere Datei namens fetchpdo.php. In der Datei gehen Sie wie folgt vor:

  • Mit der Datenbank verbinden.
  • Erstellen Sie eine neue PDO-Verbindung.
  • Erstellen Sie ein vorbereitetes SQL-Statement mit der Methode prepare().
  • Führen Sie die Anweisung aus.
  • Holen Sie sich das Ergebnis mit der Methode fetchAll().

Geben Sie nun den folgenden Code in fetchpdo.php ein.

<?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>";
?>

Ausgabe:

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

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

)

Abrufen von Ergebnissen durch Iterieren über die PDO-Anweisung in PHP

Nachdem Sie die vorbereitete SQL-Anweisung ausgeführt haben, können Sie das Ergebnis mit einer While-Schleife durchlaufen. Details finden Sie im nächsten Codeblock.

<?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 />";
    }
?>

Ausgabe:

Banana
Pineapple

Abrufen von Ergebnissen mit der PDO-Methode fetch() in PHP

Die Methode fetch() holt die nächste Zeile aus einem Ergebnis. Es erlaubt Ihnen, es in einer while-Schleife zu verwenden.

Die Details befinden sich im nächsten Codeblock.

<?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 />";
    }
?>

Ergebnisse der PDO-Methode fetch() vorverarbeiten

Wenn Sie die Datenbankdaten lieber vorverarbeiten möchten, können Sie die while-Schleife verwenden. Speichern Sie dann die verarbeiteten Ergebnisse in einem Array. Der folgende Code zeigt Ihnen, wie Sie dies tun.

<?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>";
?>

Ausgabe:

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