Mit PHP mysqli_query Informationen aus einer MySQL/MariaDB-Datenbank abrufen
Mit PHP lassen sich Informationen unkompliziert aus einer MySQL- oder MariaDB-Datenbank abrufen. Dazu wird eine Verbindung zur Datenbank hergestellt und anschließend mit PHP mysqli_query()
eine SQL-Abfrage ausgeführt, deren Ergebnisse weiterverarbeitet werden können.
- IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
- Flexibel: Maßgeschneiderte Datenbank-Lösungen ganz auf Ihre Bedürfnisse
- Rechenzentren in Deutschland: Ihre Daten sind sicher
Anforderungen
Um mit PHP Informationen aus einer MySQL- oder MariaDB-Datenbank abrufen zu können, müssen einige grundlegende Anforderungen erfüllt sein. Zunächst benötigt man eine funktionierende PHP-Umgebung auf dem Server, häufig in Kombination mit einem Webserver wie Apache oder Nginx. Wenn Sie also noch keine Umgebung haben, müssen Sie zunächst PHP installieren. Zusätzlich muss MySQL oder MariaDB installiert sein. Auf PHP-Seite ist außerdem die MySQLi-Erweiterung erforderlich, die in den meisten Standardinstallationen jedoch bereits enthalten ist.
Mit PHP Informationen aus MySQL/MariaDB abrufen
In diesem Tutorial zeigen wir, wie man eine einfache MySQL/MariaDB-Datenbank samt Tabelle und User anlegt und anschließend per PHP darauf zugreift. Schritt für Schritt entsteht so eine kleine Beispiel-Webseite, die gespeicherte Restaurant-Bewertungen direkt aus der Datenbank abfragt und in einer HTML-Tabelle ausgibt.
Schritt 1: Datenbank anlegen
In einem ersten Schritt muss die Datenbank erstellt werden. Melden Sie sich hierzu am MySQL/MariaDB-Client der Befehlszeile an:
mysql -u root -p
Erstellen Sie eine Datenbank für die Reviews:
CREATE DATABASE reviews;
Wechseln Sie zu dieser Datenbank:
USE reviews;
Für dieses Beispiel werden wir nur eine Tabelle erstellen. Diese wird drei Felder haben:
- ID-Feld: Die ID ist der Schlüssel der Tabelle und wird auf Auto-Inkrement gesetzt.
- Name des Prüfenden: Ein Textfeld mit einer Länge von bis zu 100 Zeichen.
- Sternenbewertung: Eine numerische Bewertung von 1-5 TINYINT
- Überprüfen Sie die Details: Ein Textfeld mit einer Grenze von ca. 500 Wörtern. VARCHAR(4000)
Erstellen Sie die Tabelle mit dem CREATE-TABLE-Befehl:
CREATE TABLE user_review (
id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
reviewer_name VARCHAR(100),
star_rating TINYINT,
details VARCHAR(4000)
);
Nun fügen wir zwei Beispielrezensionen zur Tabelle hinzu:
INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Ben', '5', 'Love the calzone!');
INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Leslie', '1', 'Calzones are the worst.');
Schritt 2: Datenbankuser anlegen
Legen Sie in einem nächsten Schritt einen User für die Datenbank an. Aus Sicherheitsgründen ist es immer am besten, für jede Datenbank einen eindeutigen Benutzer bzw. eine eindeutige Benutzerin anzulegen, insbesondere wenn von einer Website aus auf diese Datenbank zugegriffen wird.
Der folgende Befehl erstellt einen User namens review_site mit dem Passwort JxSLRkdutW und gewährt ihm Zugriff auf die soeben erstellte Datenbank:
CREATE USER 'review_site'@'localhost' IDENTIFIED BY 'JxSLRkdutW';
GRANT SELECT ON reviews.* TO 'review_site'@'localhost';
Schritt 3: PHP-Skript erstellen
Der Code in diesem Tutorial ist vereinfacht, um Beispiele zu zeigen. Bei der Erstellung einer Website empfehlen wir Ihnen dringend, gängige Sicherheitspraktiken zu befolgen, um sicherzustellen, dass Ihre PHP-Skripte den Zugriff auf den Server nicht einschränken.
Erstellen Sie eine Datei showreviews.php
in Ihrem Webspace und öffnen Sie sie zur Bearbeitung. Um beispielsweise die Datei im Verzeichnis /var/www/html
zu erstellen, lautet der Befehl mit dem Editor nano:
sudo nano /var/www/html/showreviews.php
In unserem Beispiel wird das PHP in HTML eingebettet sein, so dass die Seite mit den grundlegenden HTML-Deklarationen beginnt. Auch das CSS-Styling ist im HTML-Head zu finden:
<!doctype html>
<html>
<head>
<meta-charset="utf-8">
<style>
table {
border-collapse: collapse;
margin: 20px auto;
width: 80%;
}
th, td {
border: 1px solid black;
padding: 5px 10px;
text-align: left;
}
</style>
</head>
<body>
HTMLJedes PHP-Skript muss mit dem Tag PHP opening beginnen:
<?php
HTMLAls nächstes fügen Sie einen MySQL/MariaDB-Verbindungsblock mit dem Serverstandort (localhost), dem Datenbanknamen sowie dem Datenbank-Usernamen und -Passwort hinzu.
$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";
HTMLAnschließend fügen wir einen Abschnitt hinzu, um eine Verbindung zur Datenbank herzustellen. Wenn die Verbindung fehlschlägt, wird eine Fehlermeldung ausgegeben. Sie können zwischen Ihrem PHP-Skript und Ihrer Datenbank in MySQL und MariaDB mit mysqli_connect()
eine Verbindung aufbauen. Dabei werden Hostname, Benutzername, Passwort und der Datenbankname übergeben, sodass PHP genau weiß, mit welcher Datenbank es arbeiten soll.
$dbconnect=mysqli_connect($hostname,$username,$password,$db);
if (!$dbconnect) {
die("Database connection failed: " . mysqli_connect_error());
}
?>
HTMLSchritt 4: Tabelle einfügen
In einem nächsten Schritt fügen Sie in Ihrem Skript den HTML-Code hinzu, um die Tabelle zu beginnen, die wir zur Anzeige der Daten verwenden werden:
<table>
<tr>
<td>Reviewer Name</td>
<td>Stars</td>
<td>Details</td>
</tr>
HTMLDanach folgt der PHP-Code, der die Datenbank abfragt und die Ergebnisse durchläuft und jeden Review in einer eigenen Tabellenzeile anzeigt:
<?php
$query = mysqli_query($dbconnect, "SELECT * FROM user_review")
or die (mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
echo
"<tr>
<td>{$row['reviewer_name']}</td>
<td>{$row['star_rating']}</td>
<td>{$row['details']}</td>
</tr>\n
}
?>
HTMLDenken Sie am Ende des Dokumentes daran, die Tabelle und den HTML-Block zu schließen:
</table>
</body>
</html>
HTMLUm das Skript zu testen, besuchen Sie showreviews.php in einem Browser.

Schritt 5: Überblick - das fertige Skript
Das vollständige PHP-Skript lautet:
<!doctype html>
<html>
<head>
<meta-charset="utf-8”>
<style>
table {
border-collapse: collapse;
margin: 20px auto;
width: 80%;
}
th, td {
border: 1px solid black;
padding: 5px 10px;
text-align: left;
}
</style>
</head>
<body>
<?php
$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";
$dbconnect=mysqli_connect($hostname,$username,$password,$db);
if (!$dbconnect) {
die("Database connection failed: " . mysqli_connect_error());
}
?>
<table>
<tr>
<td>Reviewer Name</td>
<td>Stars</td>
<td>Details</td>
</tr>
<?php
$query = mysqli_query($dbconnect, "SELECT * FROM user_review")
or die (mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
echo
"<tr>
<td>{$row['reviewer_name']}</td>
<td>{$row['star_rating']}</td>
<td>{$row['details']}</td>
</tr>\n";
}
?>
</table>
</body>
</html>
HTML