Mit PHP lassen sich In­for­ma­tio­nen un­kom­pli­ziert aus einer MySQL- oder MariaDB-Datenbank abrufen. Dazu wird eine Ver­bin­dung zur Datenbank her­ge­stellt und an­schlie­ßend mit PHP mysqli_query() eine SQL-Abfrage aus­ge­führt, deren Er­geb­nis­se wei­ter­ver­ar­bei­tet werden können.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

An­for­de­run­gen

Um mit PHP In­for­ma­tio­nen aus einer MySQL- oder MariaDB-Datenbank abrufen zu können, müssen einige grund­le­gen­de An­for­de­run­gen erfüllt sein. Zunächst benötigt man eine funk­tio­nie­ren­de PHP-Umgebung auf dem Server, häufig in Kom­bi­na­ti­on mit einem Webserver wie Apache oder Nginx. Wenn Sie also noch keine Umgebung haben, müssen Sie zunächst PHP in­stal­lie­ren. Zu­sätz­lich muss MySQL oder MariaDB in­stal­liert sein. Auf PHP-Seite ist außerdem die MySQLi-Er­wei­te­rung er­for­der­lich, die in den meisten Stan­dard­in­stal­la­tio­nen jedoch bereits enthalten ist.

Mit PHP In­for­ma­tio­nen aus MySQL/MariaDB abrufen

In diesem Tutorial zeigen wir, wie man eine einfache MySQL/MariaDB-Datenbank samt Tabelle und User anlegt und an­schlie­ßend per PHP darauf zugreift. Schritt für Schritt entsteht so eine kleine Beispiel-Webseite, die ge­spei­cher­te Re­stau­rant-Be­wer­tun­gen 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 Be­fehls­zei­le 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.
  • Ster­nen­be­wer­tung: Eine nu­me­ri­sche Bewertung von 1-5 TINYINT
  • Über­prü­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 Bei­spiel­re­zen­sio­nen 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: Da­ten­bankus­er anlegen

Legen Sie in einem nächsten Schritt einen User für die Datenbank an. Aus Si­cher­heits­grün­den ist es immer am besten, für jede Datenbank einen ein­deu­ti­gen Benutzer bzw. eine ein­deu­ti­ge Be­nut­ze­rin anzulegen, ins­be­son­de­re wenn von einer Website aus auf diese Datenbank zu­ge­grif­fen wird.

Der folgende Befehl erstellt einen User namens review_site mit dem Passwort JxSLRk­dutW 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

Hinweis

Der Code in diesem Tutorial ist ver­ein­facht, um Beispiele zu zeigen. Bei der Er­stel­lung einer Website empfehlen wir Ihnen dringend, gängige Si­cher­heits­prak­ti­ken zu befolgen, um si­cher­zu­stel­len, dass Ihre PHP-Skripte den Zugriff auf den Server nicht ein­schrän­ken.

Erstellen Sie eine Datei showreviews.php in Ihrem Webspace und öffnen Sie sie zur Be­ar­bei­tung. Um bei­spiels­wei­se die Datei im Ver­zeich­nis /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 ein­ge­bet­tet sein, so dass die Seite mit den grund­le­gen­den HTML-De­kla­ra­tio­nen 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>
HTML

Jedes PHP-Skript muss mit dem Tag PHP opening beginnen:

<?php
HTML

Als nächstes fügen Sie einen MySQL/MariaDB-Ver­bin­dungs­block mit dem Ser­ver­stand­ort (localhost), dem Da­ten­bank­na­men sowie dem Datenbank-Usernamen und -Passwort hinzu.

$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";
HTML

An­schlie­ßend fügen wir einen Abschnitt hinzu, um eine Ver­bin­dung zur Datenbank her­zu­stel­len. Wenn die Ver­bin­dung fehl­schlägt, wird eine Feh­ler­mel­dung aus­ge­ge­ben. Sie können zwischen Ihrem PHP-Skript und Ihrer Datenbank in MySQL und MariaDB mit mysqli_connect() eine Ver­bin­dung aufbauen. Dabei werden Hostname, Be­nut­zer­na­me, Passwort und der Da­ten­bank­na­me ü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());
}
?>
HTML

Schritt 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>
HTML

Danach folgt der PHP-Code, der die Datenbank abfragt und die Er­geb­nis­se durch­läuft und jeden Review in einer eigenen Ta­bel­len­zei­le 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
}
?>
HTML

Denken Sie am Ende des Do­ku­men­tes daran, die Tabelle und den HTML-Block zu schließen:

</table>
</body>
</html>
HTML

Um das Skript zu testen, besuchen Sie show­re­views.php in einem Browser.

Bild: Anzeige von showreviews.php im Browser
Die Tabelle wird nun im Browser angezeigt.

Schritt 5: Überblick - das fertige Skript

Das voll­stän­di­ge 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
Zum Hauptmenü