PHP MySQL Daten lesen

Daten aus MySQL-Datenbank lesen

Die SELECT-Anweisung wird verwendet, um Daten aus einer Tabelle zu lesen:

SELECT column_name(s) FROM table_name

Wir können das *-Zeichen verwenden, um alle Felder in der Tabelle zu lesen:

SELECT * FROM table_name

Um mehr über SQL zu erfahren, besuchen Sie bitte unserSQL-Tutorial。


MySQLi verwenden

Im folgenden Beispiel lesen wir die Spalten id, firstname und lastname aus der Tabelle MyGuests in der Datenbank myDB und zeigen sie auf der Seite an:

Beispiel (MySQLi - objektorientiert)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Verbindung herstellen $conn = new mysqli($servername, $username, $password, $dbname); // Verbindung prüfen if ($conn->connect_error) { die("Verbindung fehlgeschlagen:" . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { //Daten ausgeben while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 Ergebnisse"; } $conn->close(); ?>

Die obige Codeanalyse lautet wie folgt:

Zuerst legen wir die SQL-Anweisung fest, um die drei Felder id, firstname und lastname aus der Tabelle MyGuests zu lesen. Dann verwenden wir diese SQL-Anweisung, um das Ergebnis-Set aus der Datenbank abzurufen und es der Variablen $result zuzuweisen.

Die Funktion num_rows() prüft die zurückgegebenen Daten.

Wenn mehrere Zeilen zurückgegeben werden, legt die Funktion fetch_assoc() das Ergebnis-Set in ein assoziatives Array und gibt es in einer Schleife aus. Die while()-Schleife durchläuft das Ergebnis-Set und gibt die Werte der drei Felder id, firstname und lastname aus.

Das folgende Beispiel verwendet den prozeduralen MySQLi-Ansatz mit ähnlichen Auswirkungen wie der obige Code:

Beispiel (MySQLi - prozedural)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Verbindung herstellen $conn = mysqli_connect($servername, $username, $password, $dbname); // Verbindung prüfen if (!$conn) { die("Verbindung fehlgeschlagen:" . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { //Daten ausgeben while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 Ergebnisse"; } mysqli_close($conn); ?>


Verwendung von PDO (+ Prepared Statements)

Das folgende Beispiel verwendet Prepared Statements.

Es wählt die Felder id, firstname und lastname aus der Tabelle MyGuests aus und platziert sie in einer HTML-Tabelle:

Beispiel (PDO)

<?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th>Id</th><th>Vorname</th><th>Nachname</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"; } } $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); $stmt->execute(); //Setze das Ergebnisset auf ein assoziatives Array $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Fehler: " . $e->getMessage(); } $conn = null; echo "</table>"; ?>

Weitere Erweiterungen