HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum |
 

 
 

Anzeige 
 
               Forum
 
 
HTMLWorld » PHP » PHP-Artikel » PHP und MySQL

PHP-Artikel: PHP und MySQL

von Michael Stöckel

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.

Anzeige

Installation der MySQL-Bibliothek  nach oben

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 muß.

Standard-Konfigurationsparameter für MySQL  nach oben

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  nach oben

Die Verbindung zum MySQL-Server kann mit mysql_connect oder mysql_pconnect aufgebaut werden. Außerdem kann Sie mit mysql_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 mysql_connect()

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

Notwendige Parameter:
Hostname oder IP-Adresse des MySQL-Servers, MySQL-User, MySQL-Paßwort.

Die Funktion muß 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.

Funktion mysql_pconnect()

Mit dieser Funktion wird eine persistente Verbindung zu einem MySQL-Server hergestellt.

Notwendige Parameter:
Hostname oder IP-Adresse des MySQL-Servers, MySQL-User, MySQL-Paßwort

Eine Verbindung, die mit dieser Funktion aufgebaut wurde, bleibt im Gegensatz zu mysql_connect()-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 mysql_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 mysql_connect-Verbindung sowieso bei Beendigung des Skriptes beendet werden.

Funktion mysql_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  nach oben

Funktion mysql_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 mysql_connect() angelegt wurde

Falls ältere PHP-Versionen im Einsatz sind, kann auch die Funktion mysql_selectdb() verwendet werden. Ein Einsatz der Funktion bei gleichzeitiger Nutzung von mysql_db_query() ist überflüssig. Die Funktion kann mehrmals in einem PHP-Skript angewendet werden, falls mehrere Datenbanken angesprochen werden sollen.

Funktion mysql_query()

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

Notwendige Parameter:
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 mysql_select_db() sinnvoll. Die Funktion kann mehrmals im PHP-Skript angewandt werden. Dabei wird grundsätzlich die mit mysql_select_db() ausgewählte Datenbank verwendet.

Funktion mysql_db_query()

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

Notwendige Parameter:
Angabe der Datenbank, SQL-Abfrage in Anführungszeichen, Verbindungskennung (optional)

Da bei dieser Funktion die Datenbank, in der die SQL-Abfrage ausgeführt werden soll, mit angegeben wird, ist der Einsatz von mysql_select_db nicht notwendig. Wenn keine Verbindungskennung angegeben wird, greift die Funktion auf eine bestehende Verbindung zurück.

Wichtig: Die Funktion mysql_db_query gilt seit der PHP-Version 4.0.6 als veraltet. Obwohl ihr Einsatz noch möglich ist, wird empfohlen, die Kombination mysql_select_db / mysql_query zu verwenden.

Verarbeitung von SQL-Statements  nach oben

Funktion mysql_real_escape_string()

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

Notwendige Parameter:
Ausdruck zum Maskieren, Verbindungskennung

Eine Verbindungskennung muß 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 mysql_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 mysql_fetch_row in einer while-Schleife so lange angewandt, bis keine Datensätze mehr zur Verfügung stehen.

Wichtig: Für die Funktion mysql_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
mysql_fetch_array Datensatz wird als assoziatives Array, als numerisches Array oder beides zurückgegeben
mysql_fetch_assoc Datensatz wird als assoziatives Array zurückgegeben
mysql_fetch_field Datensatz wird als Objekt mit Feldinformationen aus einem Abfrageergebnis zurückgegeben
mysql_fetch_lengths gibt die Länge jeden Feldes in einem Abfrageergebnis zurück
mysql_fetch_object Jede Zeile eines Datensatzes steht als Objekt zur Verfügung

Funktion mysql_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.

Für ältere PHP-Versionen kann noch die Funktion mysql_numrows() eingesetzt werden. Die Funktion mysql_num_rows() gilt nur bei SELECT-Abfragen.

Funktion mysql_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  nach oben

Funktion mysql_errorno()

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 mysql_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 mysql_errorno() 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  nach oben

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

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

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

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

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

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

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

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

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



« zurück weiter »
Bewerten

 

PHP-Artikel

.Autor:Jan Winkler.
. Bewertung:
PHP-Artikel: PHP und MySQL HTMLWorld
(5/5 bei 1 Votes)
.
. Community: 586 Beiträge im PHP-Artikel Forum .

Navigation

Achtung: Seite ist nicht mehr gültig von Sir Quicksand
Undefined variable - bitte um Hilfe von A235
Navigation Link soll ausgewählt bleiben von Maxxon
Zeitliche Zugriffsbegrenzung auf eine Webseite von Krueger008
Suche in einer Spalte Datenbank mit Ausgabe als Link von xmen
php frage von cyborg
Welchen Befehl? von duesseltalker
Mail vom Kontaktformular ist leer von promo
Formular wird alphabetisch sortiert, statt logisch von gooddog
Bekomme Validierung von Style.css.php nicht in den Griff !? von OneMoreMedia
Seiteninhalt über ID's ändern ? von Alex...
Custom tailor made sites to suit your business requirement. von acumencs
Struktur von php-Dateien in wordpress von Iago
Extension:LDAP Authentication von sternkopf
Warnung bzw. Fehlermeldung von rallaf

zum PHP-Artikel Forum »


 
     
 

Anzeige