25.04.18 11885 Views 10

credit: ©Gorodenkoff(stock.adobe.com)

PHP Tutorial #25

PHP mit MySQL verbinden

Einer der wichtigsten Einsatzzwecke von PHP ist das Arbeiten mit MySQL-Datenbanken. In diesem Tutorial erklären wir Ihnen, wie wir zunächst mit phpMyAdmin eine Tabelle in einer MySQL-Datenbank erstellen und anschließend auf diese mit PHP zugreifen. Ein wenig Grundkenntnisse in SQL sind für das Verständnis wichtig.

Download als eBook

Mit der MySQL-Datenbank verbinden:

<?php
$host_name = 'HOSTNAME_EINTRAGEN';
$user_name = 'USERNAME_EINTRAGEN';
$password = 'PASSWORD_EINTRAGEN';
$database = 'DATENBANKNAME_EINTRAGEN';

$connect = mysqli_connect($host_name, $user_name, $password, $database);
?>

    Inhaltsverzeichnis

  1. Vorbereitungen
  2. Verbindung herstellen
  3. SQL-Abfrage durchführen
  4. Übungen

Vorbereitungen

Bevor wir loslegen können, brauchen wir erst einmal eine Datenbank sowie (darin enthalten) mindestens eine SQL-Tabelle. Wenn Sie beides schon haben, können Sie diesen Schritt gern überspringen.

Es ist am einfachsten, eine Datenbank mit phpMyAdmin zu erstellen.

Wenn Sie PHP auf einem lokalen Apache Server mithilfe von XAMPP verwenden, ist in den meisten Fällen phpMyAdmin schon fertig eingerichtet. Rufen Sie hierzu im Browser einfach localhost/phpmyadmin auf (die Apache- und MySQL-Server müssen natürlich laufen).

Betreiben Sie PHP dagegen auf einem online Webspace, stellt Ihnen ein Provider wie 1&1 phpMyAdmin oftmals bereits vorinstalliert zur Verfügung. Ist dies bei Ihrem Provider nicht der Fall, müssen Sie es erst noch installieren.

Um eine neue Datenbank zu erstellen, klicken Sie in phpMyAdmin im Seitenmenu links auf Neu und geben anschließend den Namen der Datenbank ein, die Sie anlegen wollen. Wenn dieser Punkt nicht verfügbar ist, müssen Sie die Datenbank über den Admin-Bereich des Webspace-Kontos Ihres Providers anlegen (z.B. Menupunkt MySQL-Datenbank > Datenbank erstellen).

Tabelle erstellen

Ihre Datenbank benötigt nun eine Tabelle, in welche die Datensätze eintragen werden. Wählen Sie hierzu links im Seitenmenu von phpMyAdmin die soeben erstellte Datenbank aus. Geben Sie nun unter Erzeuge Tabelle den Namen der Tabelle und ihre Spaltenzahl an. Wir nennen unsere Test-Tabelle einfach mal mitarbeiter (jaja, sehr originell) und wählen als Spaltenanzahl 5 aus. Klicken Sie anschließend auf OK.

Sie müssen im nächsten Schritt die Struktur der Tabelle anlegen. Die Struktur könnte zum Beispiel zu aussehen:

PHP MySQL verbinden

Wenn Sie fertig sind, klicken Sie auf Speichern. Die Tabelle ist damit erzeugt.

Datensätze einfügen

Die Tabelle wartet nun darauf, mit Datensätzen gefüttert zu werden! Um das zu tun, klicken Sie im Seitenmenu links unterhalb des Datenbank-Icons auf die eben erstellte Tabelle mitarbeiter. Wählen Sie anschließend im Menu oben den Button Einfügen aus.

Sie tragen anschließend die Datensätze mit gültigen Werten ein und bestätigen am Ende mit OK.

PHP MySQL verbinden

Nun hat Ihre Tabelle ein paar Datensätze. Sie können sich diese mit einem Klick auf Anzeigen (im Menu oben) ansehen, ändern oder löschen.

Wir haben nun eine MySQL-Datenbank mit einer Tabelle angelegt. Es wird Zeit, PHP ins Spiel zu bringen 😎

Verbindung herstellen

Um eine Verbindung mit der MySQL-Datenbank herzustellen, brauchen wir folgende Informationen über unseren MySQL-Server:

  • Hostname
  • Username
  • Passwort
  • Datenbankname

Wir speichern diese Daten am besten in vier Variablen. Anschließend rufen wir die PHP-Funktion mysqli_connect() auf. Auf diese Funktion kommt es an, denn sie stellt die Verbindung zum Datenbankserver her. Wir übergeben der Funktion die vier Variablen als Argumente in Klammern:

<?php
$host_name = 'HOSTNAME_EINTRAGEN';
$user_name = 'USERNAME_EINTRAGEN';
$password = 'PASSWORD_EINTRAGEN';
$database = 'DATENBANKNAME_EINTRAGEN';

$connect = mysqli_connect($host_name, $user_name, $password, $database);
?>

Die Funktion mysqli_connect() liefert als Rückgabewert eine Referenz auf die Verbindung. Diese Referenz ist sehr wichtig, denn wir brauchen sie immer, wenn wir eine SQL-Abfrage starten. Wir sollten sie daher für die weitere Verwendung in einer Variablen speichern ($connect).

Wenn sie PHP und MySQL lokal über XAMPP verwenden, ist der Standard-Hostname (sofern nicht anders belegt) ein leerer String '' oder localhost, der Standardbenutzer root und das Passwort ebenfalls ein leerer String ''.

SQL-Abfrage durchführen

Um unsere Verbindung zu testen, wollen wir eine einfache SQL-Abfrage für unsere Tabelle mitarbeiter ausführen. Mit der SQL-Abfrage SELECT * FROM Mitarbeiter können wir etwa alle Datensätze der Tabelle anzeigen lassen.

Doch wie bekommen wir das mit PHP auf die Reihe? 🤔

Ganz einfach: Wir benutzen die beiden Funktionen mysqli_query() und mysqli_fetch_assoc().

Schauen wir uns zunächst den kompletten Code mit Ausgabe im Browser an. Anschließend erklären wir alles Schritt für Schritt.

<?php
// Verbindung muss hergestellt sein (siehe Code oben)

$abfrage = "SELECT * FROM Mitarbeiter";

$result = mysqli_query($connect, $abfrage);

while($dsatz = mysqli_fetch_assoc($result)){
echo $dsatz["name"] . ", " .
    $dsatz["vorname"] . ", " .
    $dsatz["personalnummer"] . ", " .
    $dsatz["gehalt"] . ", " .
    $dsatz["geburtstag"] .
    "
"; } ?>

und hier die Ausgabe im Browser:

Picard, Jean-Luc, 1234, 10000.00, 1988-10-03
Riker, William T., 2100, 7000.00, 1998-10-04
La Forge, Geordi, 2120, 5000.00, 1999-01-03
Troi, Deanna, 2730, 5000.00, 1997-12-20
Barclay, Reginald, 2777, 2000.00, 1997-03-21

Gehen wir nun die einzelnen Schritte nacheinander durch:

  • Wir speichern als erstes die SQL-Abfrage, die wir durchführen wollen, als String in einer Variablen $abfrage.
  • Nun rufen wir die Funktion mysqli_query() auf. Diese Funktion führt die SQL-Abfrage aus. Sie fordert zwei Parameter: Die Referenz auf die Verbindung sowie den SQL-Abfrage-String. Wir übergeben also $connect und $abfrage.
    Wenn das funktioniert hat, liefert die Funktion eine Ergebniskennung auf die Abfrage zurück, die wir in der Variablen $result speichern. Die brauchen wir, um uns die Datensätze der SQL-Abfrage zu holen.
  • Wir verwenden jetzt die Funktion mysqli_fetch_assoc() und übergeben ihr die Variable $result als Argument. Gut aufpassen, jetzt wird's interessant: Die Funktion mysqli_fetch_assoc() liefert in Kombination mit der while-Schleife alle Datensätze der SQL-Abfage nacheinander in mehreren assoziativen Arrays (hier: $dsatz) zurück.

    Die Tabellen-Attribute (name, vorname usw.) stellen in jedem dieser Arrays die Schlüssel (keys) dar, mit denen wir die passenden Werte (values) ansteuern können. So passt etwa zum Schlüssel $dsatz["name"] des ersten Arrays der Wert Picard.

    Die while-Schleife läuft solange, bis mysqli_fetch_assoc keinen Datensatz mehr liefert. Dann nämlich wird die Zuweisung $dsatz = mysqli_fetch_assoc($result) false und die Schleife endet. Da wir 5 Datensätze in unserer Beispieltabelle mitarbeiter haben, wird die while-Schleife also 5x durchlaufen und es werden 5 Arrays erstellt.

    Keep in mind: Mit jedem Schleifendurchlauf wird ein neues assoziatives Array erstellt und das vorhergehende ist verloren. Die Variable $dsatz verweist also zu jedem Schleifendurchlauf auf ein anderes Array. Das bedeutet wiederum, dass wir jeden Datensatz nur innerhalb des jeweiligen Durchlaufs ("wenn es an der Reihe ist") verwenden.

Wir sollten am Ende noch die Verbindung zur Datenbank trennen. Dafür dient die Funktion mysqli_close($connect);

Zu guter Letzt noch der gesamte Code im Überblick:

<html><body>
<?php

//1. MySQL-Verbindung herstellen
$host_name = 'HOSTNAME_EINTRAGEN';
$user_name = 'USERNAME_EINTRAGEN';
$password = 'PASSWORD_EINTRAGEN';
$database = 'DATENBANKNAME_EINTRAGEN';

$connect = mysqli_connect($host_name, $user_name, $password, $database);


//2. Test-Abfrage durchführen
$abfrage = "SELECT * FROM Mitarbeiter";
$result = mysqli_query($connect, $abfrage);

while($dsatz = mysqli_fetch_assoc($result)){
    echo $dsatz["name"] . ", " .
    $dsatz["vorname"] . ", " .
    $dsatz["personalnummer"] . ", " .
    $dsatz["gehalt"] . ", " .
    $dsatz["geburtstag"] .
    "<br>";
}


// Verbindung trennen:
mysqli_close($connect);

?>
</body></html>

Übungen

einfach

Angenommen, Ihr MySQL-Datenbankserver hat folgende Zugangsdaten:

Hostname: db3215534
Benutzername: dbo13229
Passwort: pwX&%99
Name der Datenbank: DatenbankFuerFirma

Wie stellen Sie eine Verbindung zur Datenbank her?

Lösung ein-/ausblenden

mittel

Wir haben eine Tabelle, die programmierkurse heißt. Diese Tabelle hat folgende Spalten: id, titel, beschreibung, preis.

Wie müsste der PHP-Code aussehen, um alle Datensätze der Tabelle im Browser anzuzeigen?

Lösung ein-/ausblenden

schwer

Bilden Sie folgende MySQL-Tabelle nach bzw. importierten Sie diese (falke.sql).

+----+----------+-------------+-----------+
| id | name     | rasse       | alterTier |
+----+----------+-------------+-----------+
|  1 | Drago    | Turmfalke   |        12 |
|  2 | Merlin   | Turmfalke   |        10 |
|  3 | Redhead  | Rotfußfalke |         5 |
|  4 | Lancelot | Silberfalke |         7 |
|  5 | Parzival | Buntfalke   |         1 |
+----+----------+-------------+-----------+   

Führen Sie nun eine MySQL-Abfrage durch, die alle Turmfalken am Bildschirm ausgibt, die älter sind als 4 Jahre.

Das Ergebnis soll unter einer h1-Überschrift und in einer einfachen HTML-Tabelle folgendermaßen angezeigt werden:

PHP MySQL verbinden

Lösung ein-/ausblenden

Java lernen

text text

PHP Lernen

zur PHP

JavaScript lernen

move nove move

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2023 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte Youtube Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen