PHP - Befehle - Datenbanken
1. MySQL
Ich werde mich in diesem Abschnitt ausschließlich mit MySQL beschäftigen, da ich ehrlich gesagt mich noch nie mit einem anderen
Datenbanksystem beschäftigen musste, wenn es um PHP ging. Auch werde ich bis auf weiteres die Möglichkeiten ignorieren, die
uns sei PHP5 mit mysqli und PDO zur Verfügung stehen. Das kommt später, wenn ich Zeit dazu habe.
Ein Hinweis
Wer noch keine Ahnung von MySQL hat, soll sich erst mal keinen Kopf um die SQL-Anweisungen machen. Darauf gehe ich unter dem entsprechenden Punkt ein.
2. mysql_connect
Stellt die Verbindung zu einer Datenbank her. Diese Funktion erwartet drei Parameter, den Host, Benutzernamen und das Passwort.
<?php
$db = mysql_connect('localhost','benutzer','passwort');
?>
In der Variable, hier $db, steht dann der Verweis/Zeiger auf die Verbindung.
3. mysql_select_db
Wählt die angegebene Datenbank aus. Dabei wird der Zeiger aus obigem Verbindungsaufbauscript benötigt.
<?php
mysql_select_db('meine_db',$db);
?>
4. mysql_query
Sendet eine Anfrage an die Datenbank. Bei Änderungen innerhalb der Datenbank bekommt man ein true bzw. eine 1
zurück, wenn die Korrektur erfolgreich war, bei einer Suchanfrage erhält man einen Zeiger, mit dem man das Ergebnis mit den
folgenden Befehlen auswerten kann.
<?php
$result = mysql_query('SELECT * FROM meine_tabelle');
$result = mysql_query('UPDATE meine_tabelle SET ...');
?>
5. mysql_num_rows
Liefert die Anzahl der gefunden Treffer einer Abfrage. Dabei muss der entsprechende "Zeiger" der Anfrage angegeben werden.
<?php
$result = mysql_query('SELECT * FROM meine_tabelle');
$num = mysql_num_rows ($result);
?>
6. mysql_fetch_irgendwas
Um nun die Ergebnisse einer Anfrage auszuwerten, gibt es vier verschiedene Möglichkeiten, die sich nur in der Art und Weise der Ausgabe unterscheiden. Beachten muss man dazu Folgendes. Wenn man genau weiß, dass maximal ein(!) Treffer gelandet wird, so kann man den entsprechenden mysql_fetch_irgendwas-Befehl normal verwenden, ansonsten benötigt man eine Schleife.
mysql_fetch_row
Liefert das Ergebnis in einem numerischen Array zurück, pro abgefragtem Tabellenfeld eines.
mysql_fetch_array
Liefert das Ergebnis in einem numerisch-assoziativem Array zurück. Dabei werden pro Treffer für jedes abgefragte Tabellenfeld zwei Einträge erzeugt, einer mit einer fortlaufenden Nummer und einer mit dem Namen des Tabellenfeldes.
mysql_fetch_assoc
Liefert das Ergebnis in einem assoziativen Array zurück. Dabei wird für jedes abgefragte Tabellenfeld ein Index angelegt, der den Namen des Feldes trägt.
mysql_fetch_object
Liefert das Ergebnis als Objekt zurück. Habe ich noch nie benutzt, also geh fort.
<?php
$result = mysql_query('SELECT * FROM meine_tabelle');
// z.B. wir erwarten mehrere Treffer
while ($rows = mysql_fetch_assoc ($result))
{
...
}
// z.B wir haben definitiv nur einen Treffer
$rows = mysql_fetch_array ($result)
?>
Mein Tipp
Benutzt mysql_fetch_assoc, das ist meiner Meinung nach die eleganteste und einfachste Art.
7. mysql_error
Hiermit kann man sich Fehlermeldungen der Datenbank ausgeben lassen und entsprechend darauf reagieren.
<?php
mysql_select_db('meine_db',$db) or die (mysql_error());
?>
8. mysql_affected_rows
Damit kann man die Anzahl von geänderten(!) Datensätzen ermitteln.
<?php
$result = mysql_query('UPDATE bla SET blubb = 1 WEHRE id > 4');
$changed = mysql_affected_rows ($result);
?>
9. mysql_insert_id
Liefert die ID einer vorherigen INSERT-Anweisung, wenn die Tabelle ein Feld vom Typ AUTO_INCREMENT
hat.
<?php
$result = mysql_query('INSERT INTO bla VALUES(1, 'blubb')');
$id = mysql_insert_id();
?>
10. mysql_info
Liefert genauere Angaben über das Ergebnis von INSERT-, UPDATE-, ALTER TABLE und
LOAD DATA INFILE-Anweisungen.
<?php
$result = mysql_query('UPDATE bla SET blubb = 1 WEHRE id > 4');
$info = mysql_info();
?>