V. 8.7 (27.03.2012)

Infos

Download

Theorie PHP

Schnellsuche

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();
?>

weiter zum nächsten Abschnitt