Kontakt aufnehmen

PHP und MySQL

Die Datenbank MySQL hat sich im Laufe der Zeit zu der Datenbank für Webanwendungen schlechthin entwickelt. Daneben hat sich die Skriptsprache PHP als Schnittstelle zur MySQL-Datenbank im Internet etabliert. Das schnelle Verständnis, die vielen Funktionen und die einfache Umsetzbarkeit der MySQL-PHP-Komponente ermöglicht einen schnellen und effektiven Zugriff auf die Datenbank.

Installation der MySQL-Bibliothek

Eine separate Installation der MySQL-Komponente ist nicht notwendig. Bei einer Installation von PHP wird sie automatisch mitgeliefert. Weiterhin ist sie in der Konfigurationsdatei von PHP bereits aktiv, so dass sie vor der Nutzung auch nicht mehr freigeschaltet werden muss.

Standard-Konfigurationsparameter für MySQL

In der php.ini - Datei stehen verschiedene Parameter zur Verfügung, mit denen der Zugriff auf die Datenbank konfiguriert werden kann. Falls in einem Skript keine eigenen Zugriffsdaten definiert sind, werden automatisch die Informationen aus der php.ini hergenommen.

Die folgende Tabelle zeigt die Parameter, die angegebenen Standardwerte und Anmerkungen, die man beachten sollte:

Parameter Standardwert Bedeutung
mysql.allow_persistent On Dauerhafte Verbindungen zum MySQL-Server (On = Erlaubt; Off=Nicht erlaubt)
mysql.max_persistent -1 Maximale Anzahl dauerhafter Verbindungen zum MySQL-Server (-1 = keine Grenze)
mysql.max_links -1 Maximale Anzahl von Verbindungen zum MySQL-Server (-1 = keine Grenze)
mysql.default_port keine Angabe Portnummer für Netzwerkzugriff auf MySQL-Server (keine Angabe = Standardport)
mysql.default_socket keine Angabe Angabe des Sockets für Zugriff (keine Angabe = MySQL-eigenes Socket)
mysql.default_host keine Angabe Standard-Hostname für den MySQL-Server
mysql.default_user keine Angabe Standard-User für Zugriff auf MySQL-Server
mysql.default_password keine Angabe Standard-Paßwort für Zugriff auf MySQL-Server
mysql.connect_timeout 60 Maximale Dauer für Verbindungsversuche zum MySQL_Server (Angabe in Sekunden)
mysql.trace_mode Off Tabellen- und Index-Scans und SQL-Fehler werden angezeigt (On = Erlaubt; Off=Nicht erlaubt)

Verbindung zu einem MySQL-Server

Die Verbindung zum MySQL-Server kann mit mysqli_connect aufgebaut werden. Außerdem kann Sie mit mysqli_close geschlossen werden, was allerdings meist nicht notwendig ist, da der Server sie automatisch nach einer Weile schließt wenn sie nicht mehr verwendet wird.

Funktion mysqli_connect()

Diese Funktion stellt eine Verbindung zu einem MySQL-Server her.

Mögliche Parameter:
Hostname oder IP-Adresse des MySQL-Servers, MySQL-User, MySQL-Paßwort., Datenbankname, Datenbankserver-Port, Socket

Die Funktion muss nur einmal in einem Skript aufgerufen werden. Eine über diese Funktion aufgebaute Verbindung wird bei Beendigung des PHP-Skriptes automatisch wieder geschlossen. Die Funktion arbeitet mit einem Rückgabewert, so dass überprüft werden kann, ob tatsächlich eine Verbindung zum Datenbankserver aufgebaut werden konnte oder nicht. Der Rückgabewert sollte unbedingt genutzt werden, da dieser die Verbindungskennung enthält, auf die die folgenden Funktionen der Bibliothek zugreifen.

Vor den Hostnamen kann ein "p:" (für "persistant") geschrieben werden. Eine Verbindung, die mit "p:" aufgebaut wurde, bleibt im Gegensatz zur einfachen Variante auch nach Beendigung des Skriptes offen und für andere Skripte nutzbar. Der Vorteil besteht darin, dass beim nächsten Skriptaufruf die Verbindung bereits besteht und nicht extra aufgebaut werden muss (= schneller).

Funktion mysqli_close()

Damit wird die Verbindung zu einem Datenbankserver geschlossen.

Notwendige Parameter:
Kennung der vorher aufgebauten Verbindung

Wenn keine Verbindungskennung angegeben wird, wird die letzte geöffnete Verbindung zum Datenbankserver geschlossen. Die Verwendung der Funktion ist nicht unbedingt notwendig, da sie persistente Verbindungen nicht schließen kann und mysqli_connect-Verbindung sowieso bei Beendigung des Skriptes beendet werden.

Funktion mysqli_ping()

Die Funktion überprüft, ob die vorher aufgebaute Verbindung zum Datenbankserver noch besteht.

Notwendige Parameter:
Kennung der vorher aufgebauten Verbindung

Wenn keine Verbindung mehr zum Datenbankserver besteht, wird automatisch eine neue Verbindung aufgebaut.

SQL-Statements aus einer Datenbank

Funktion mysqli_select_db()

Diese Funktion ermöglicht die Auswahl der Datenbank, mit der das PHP-Skript arbeiten soll.

Notwendige Parameter:
Name der Datenbank, Verbindungskennung, die mit mysqli_connect() angelegt wurde

Funktion mysqli_query()

Mit dieser Funktion wird eine SQL-Abfrage an den Datenbankserver geschickt.

Notwendige Parameter:
Kennung der Mysql-Verbindung
SQL-Abfrage in Anführungszeichen

Wenn das SQL-Statement dynamisch generiert wurde, kann anstatt der statischen SQL-Abfrage auch eine Variable (= Rückgabewert der dynamisch generierten SQL-Abfrage) als Parameter angegeben werden. Der Einsatz dieser Funktion ist nur im Zusammenhang mit mysqli_select_db() sinnvoll. Die Funktion kann mehrmals im PHP-Skript angewandt werden. Dabei wird grundsätzlich die mit mysqli_select_db() ausgewählte Datenbank verwendet.

Verarbeitung von SQL-Statements

Funktion mysqli_real_escape_string()

Mit dieser Funktion werden Sonderzeichen in einem Ausdruck, der für ein SQL-Statement verwendet werden soll, maskiert.

Notwendige Parameter:
Kennung der Mysql-Verbindung

Ausdruck zum Maskieren, Verbindungskennung

Eine Verbindungskennung muss zwingend mit angegeben werden, sonst wirkt die Funktion nicht. Die Funktion beugt u.a. auch dem SQL-Injection-Problem vor. Die Funktion fügt den Sonderzeichen x00, n, r, , ', " und x1a ein weiteres ""-Zeichen hinzu.

Funktion mysqli_fetch_row()

Diese Funktion liefert das Ergebnis einer SELECT-Abfrage als sog. "indiziertes Array" zurück. Das heißt, dass jede Zeile eines ermittelten Datensatzes als Array-Elemente zur Verfügung stehen.

Notwendige Parameter:
Rückgabewert(Kennung) der mit einer der query-Funktionen abgesetzten SQL-Statements.

Der Rückgabewert dieser Funktion ist automatisch ein Array. Normalerweise wird mysqli_fetch_row in einer while-Schleife so lange angewandt, bis keine Datensätze mehr zur Verfügung stehen.

Wichtig: Für die Funktion mysqli_fetch_row() gibt es mehrere Alternativen, die alle den gleichen Zweck haben und über deren Einsatz der Programmierer nach seinem eigenen Ermessen entscheiden kann.

Die folgende Tabelle zeigt die Alternativen und deren Bedeutung auf.

FunktionBedeutung
mysqli_fetch_array Datensatz wird als assoziatives Array, als numerisches Array oder beides zurückgegeben
mysqli_fetch_assoc Datensatz wird als assoziatives Array zurückgegeben
mysqli_fetch_field Datensatz wird als Objekt mit Feldinformationen aus einem Abfrageergebnis zurückgegeben
mysqli_fetch_lengths gibt die Länge jeden Feldes in einem Abfrageergebnis zurück
mysqli_fetch_object Jede Zeile eines Datensatzes steht als Objekt zur Verfügung

Funktion mysqli_num_rows()

Diese Funktion gibt die Anzahl der Datensätze zurück, die mit der dazugehörigen SQL-Abfrage ermittelt wurde.

Notwendige Parameter:
Rückgabewert(Kennung) der mit einer der query-Funktionen abgesetzten SQL-Statements.

Die Funktion mysqli_num_rows() gilt nur bei SELECT-Abfragen.

Funktion mysqli_affected_rows()

Diese Funktion gibt die Anzahl der Datensätze zurück, die mit der dazugehörigen SQL-Abfrage ermittelt wurde.

Notwendige Parameter:
Rückgabewert(Kennung) der mit einer der query-Funktionen abgesetzten SQL-Statements.

Diese Funktion kann nur bei SQL-Befehlen verwendet werden, die die Datensätze in einer Datenbank tatsächlich verändern (INSERT, DELETE, UPDATE). Bei einem SQL-UPDATE-Statement liefert die Funktion nur die Anzahl der Datensätze zurück, bei denen der Befehl auch tatsächlich ausgeführt wurde. Entspricht der neue Wert dem alten Wert in der Datenbank, wird das UPDATE-Statement nicht durchgeführt!

Behandlung von Fehlern

Funktion mysqli_errno()

Diese Funktion liefert die Fehlernummer einer zuvor ausgeführten MySQL-Operation zurück.

Notwendige Parameter:
Kennung/Rückgabewert der vorher ausgeführten MySQL-Funktion

Wenn kein Fehler aufgetreten ist, liefert die Funktion den Wert -1 zurück. Die Funktion greift auf die letzte zuvor ausgeführte MySQL-Operation zurück, wenn kein Rückgabewert angegeben wurde.

Funktion mysqli_error()

Diese Funktion liefert den Fehlertext einer zuvor ausgeführten MySQL-Operation zurück.

Notwendige Parameter:
Kennung/Rückgabewert der vorher ausgeführten MySQL-Funktion

Wenn kein Fehler aufgetreten ist, liefert die Funktion den Wert -1 zurück. Die Funktion greift auf die letzte zuvor ausgeführte MySQL-Operation zurück, wenn kein Rückgabewert angegeben wurde. Im Gegensatz zu mysqli_errno() wird hier ein Fehlertext und keine Nummer ausgegeben.

Wichtig: Die Fehlernummern bzw. Fehlertexte, auf die die beiden Funktionen zugreifen, entsprechen den Standardfehlercodes, die der MySQL-Server mitliefert.

Praktisches Beispiel in einem PHP-Skript

<?
// Festlegung der Verbindungsparameter
$db_host = "localhost";
$db_name = "test";
$db_user = "root";
$db_passwort = "waltraud";

// Aufbau der Verbindung und Fehlerüberprüfung
$connection = @mysqli_connect($db_host,$db_user,$db_passwort);

if(!connection)
{
 die "Verbindungsaufbau nicht möglich, da:". mysql_error();
}

// Auswahl der benötigten Datenbank
@mysqli_select_db($db_name);

// Zugriff auf Suchbegriff und Absetzen des MySQL-Statements
$result = @mysqli_query('SELECT titel, medium FROM film '.
                       'WHERE title = "Pulp Fiction"');

// Ermittlung und Anzeige der Anzahl der Datensätze
$count = mysqli_num_rows($result);
print("Es wurden $count Filme in der Datenbank gefunden");

// Verarbeitung des MySQL-Statements
while($row = @mysqli_fetch_row($result))
{
 print("
        <p>Titel: $row[0]</p>
        <p>Medium: $row[1]</p>
       ");
}

// Schließen der aktuellen Verbindung zum Datenbankserver
$close = @mysqli_close($connection);

if(!$close)
{
 echo "Verbindung zum Datenbankserver wurde geschlossen";
}
?>

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Verkettete Methodenaufrufe

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern