English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP-Grundlagen教程

PHP-Hochschul教程

PHP & MySQL

PHP-Referenzhandbuch

PHP-MySQL-WHERE

In diesem教程 lernen Sie, wie Sie in PHP nach bestimmten Bedingungen Daten aus einer MySQL-Datenbanktabelle lesen.

Datensätze filtern

WHEREDer Teil wird nur verwendet, um diejenigen Zeilen abzurufen, die den angegebenen Bedingungen entsprechen.

Die grundlegende Syntax des WHERE-Teils kann wie folgt gegeben werden:

SELECT column_name(s) FROM table_name WHERE column_name operator value

Lassen Sie uns eine SQL-Abfrage mit WHERE-Teil durchführen und diese an die PHP-Funktion mysqli_query() übergeben, um die gefilterten Daten abzurufen.
Angeheben Sie eine Personen-Tabelle in der demo-Datenbank, die die folgenden Einträge hat:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email                |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John                         | Rambo                       | [email protected]                   |
|  3 | Clark                         | Kent                         | [email protected]                   |
|  4 | John                         | Carter                       | [email protected]                 |
|  5 | Harry                       | Potter                       | [email protected]               |
+----+------------+-----------+----------------------+

Das folgende PHP-Code-Snippet auspersonsAlle Zeilen mit first_name = 'john' aus der Tabelle lesen:

Beispiel: Prozeduraler Modus

<?php
/* Versuchen Sie, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus.
Server mit Standardeinstellungen (Benutzer "root" ohne Passwort) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Verbindung überprüfen
if($link === false){
    die("Fehler: Verbindung kann nicht hergestellt werden. " . mysqli_connect_error());
}
 
//Versuchen Sie, die Abfrage auszuführen
$_sql = "SELECT * FROM persons WHERE first_name='john'";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $_row['id'] . "</td>";
                echo "<td>" . $_row['first_name'] . "</td>";
                echo "<td>" . $_row['last_name'] . "</td>";
                echo "<td>" . $_row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Ergebnisset schließen
        mysqli_free_result($result);
    } else{
        echo "Kein Eintrag gefunden, der Ihrer Abfrage entspricht.";
    }
} else{
    echo "Fehler: Es konnte keine Ausführung von $sql durchgeführt werden. " . mysqli_error($link);
}
 
//Verbindung schließen
mysqli_close($link);
?>

Beispiel: Objektorientierter Modus

<?php
/* Versuchen Sie, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus.
Server mit Standardeinstellungen (Benutzer "root" ohne Passwort) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verbindung überprüfen
if($mysqli === false){
    die("Fehler: Verbindung kann nicht hergestellt werden. " . $mysqli->connect_error);
}
 
//Versuchen Sie, die Abfrage auszuführen
$_sql = "SELECT * FROM persons WHERE first_name='john'";
if($result = $mysqli->query($sql));
    if($_result->num_rows > 0);
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($_row = $_result->fetch_array());
            echo "<tr>";
                echo "<td>" . $_row['id'] . "</td>";
                echo "<td>" . $_row['first_name'] . "</td>";
                echo "<td>" . $_row['last_name'] . "</td>";
                echo "<td>" . $_row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Freigabe der Ergebnismenge
        $result->free();
    } else{
        echo "Kein Eintrag gefunden, der Ihrer Abfrage entspricht.";
    }
} else{
    echo "Fehler: Es konnte keine Ausführung von $sql durchgeführt werden. " . $mysqli->error;
}
 
//Verbindung schließen
$mysqli->close();
?>

Beispiel: PDO-Modus

<?php
/* Versuchen Sie, eine Verbindung zum MySQL-Server herzustellen. Angenommen, Sie führen MySQL aus.
Server mit Standardeinstellungen (Benutzer "root" ohne Passwort) */
try{
    $_pdo = new PDO("mysql:host=localhost;dbname=demo", "root", \
    //PDO-Fehlermodus auf Ausnahme setzen
    $_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $_e){
    die("Fehler: Verbindung kann nicht hergestellt werden. \->getMessage());
}
 
//Versuchen Sie, die Abfrage auszuführen
try{
    $_sql = "SELECT * FROM persons WHERE first_name='john'";  
    $_result = $_pdo->query($_sql);
    if($_result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($_row = $_result->fetch()){
            echo "<tr>";
                echo "<td>" . $_row['id'] . "</td>";
                echo "<td>" . $_row['first_name'] . "</td>";
                echo "<td>" . $_row['last_name'] . "</td>";
                echo "<td>" . $_row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Freigabe der Ergebnismenge
        unset($result);
    } else{
        echo "Kein Eintrag gefunden, der Ihrer Abfrage entspricht.";
    }
} catch(PDOException $_e){
    die("Fehler: Der Befehl $_sql kann nicht ausgeführt werden. \->getMessage());
}
 
//Verbindung schließen
unset($pdo);
?>

Nach dem Filteren wird das Ergebnis wie folgt aussehen:

+----+------------+-----------+---------------------+
| id | first_name | last_name | email |
+----+------------+-----------+---------------------+
|  2 | John | Rambo | [email protected] |
|  4 | John | Carter | [email protected] |
+----+------------+-----------+---------------------+