Hauptmenü

Untermenü

Advanced SQL - Praxistutorial 1 - Die Datenbank-Klasse

1. Die Abschnitte

2. Die Klasse

Wie schon in anderen Tutorials auch bauen wir uns eine kleine Klasse mit allen Methoden, die wir später benötigen. Allerdings basiert sie diesmal auf PDO. Darum arbeiten wir hier auch mit extends, also so.


class Db extends PDO { 

}

Ach ja, die entsprechende Datei dazu nennt sich Db.class.php und gehört in den Ordner class. Wer hier schon die Tutorials zum Thema OOP durchgearbeitet hat, kann sich sicher denken, warum wir das so machen. Die Anderen müssen sich einfach ein wenig gedulden.

3. Der Konstruktor

Da PDO selber über einen Konstruktor verfügt, der die Verbindung zur Datenbank aufnimmt, benötigen wir in unserer Mini-Klasse natürlich auch einen. Was die eigentlichen Werte angeht, so gehe ich darauf im nächsten Abschnitt ein. Das betrifft natürlich auch die fehlende Behandlung von Fehlern.


public function __construct($options$attributes) {
  parent::__construct(SERVERUSERPW$options);
  foreach ($attributes as $key => $value) {
    $this -> setAttribute($value[0], $value[1]); 
  }        
}

4. Suche nach mehreren Datensätzen

Im Gegensatz zur MySQL- und MySQLi-Erweiterung bietet PDO bereits eine Methode an, die das automatisch übernimmt. Allerdings gehört sie zur PDOStatement-Klasse. Darum müssen wir hier bei der eigentlichen Abfrage mit einer Referenzvariablen (hier $stmt) arbeiten.


public function selectMultiple($query) {
  $stmt   $this -> query($query);
  $result $stmt -> fetchAll(FETCH);
  return $result;
}

Ein Hinweis

Bei fetchAll kann man sowohl mit einem Prepared Statemente à la execute als auch mit einem normalen query arbeiten. Hier nehmen wir einfach mal letztere Variante. Ach ja, zur Konstante FETCH komme ich gleich.

5. Suche nach einem Datensätzen

Anstelle des fetchAll arbeiten wir hier einfach nur mit einem fetch. Das war es schon.


public function selectOne($query) {
  $stmt   $this -> query($query);
  $result $stmt -> fetch(FETCH);
  return $result;
}

6. Datensatz ändern

Diese Methode ist ein Mäusefurz. Es wird einfach nur ein exec ausgeführt.


public function change($query) {
  return $this -> exec($query);
}

Ein Hinweis

In diesem Tutorial werden wir die Methode noch nicht nutzen, aber vielleicht in einem der nächsten. Darum habe ich sie schon prophylaktisch eingebaut.

7. Datensatz einfügen

Im Gegensatz zur MySQL- und MySQLi-Erweiterung läuft das bei PDO ausschließlich über Prepared Statements. Darum muss in diesem Fall auch erst ein prepare und dann das execute ausgeführt werden.


public function insert($query$settings) {
  $stmt $this -> prepare($query);
  return $stmt -> execute($settings);
}

8. Zusammenfassung

Ich bin das hier mit euch wirklich nur hopplahopp durchgegangen, um euch ein paar Methoden der Datenbank-Klasse vorzustellen. Wer sich mit der Theorie zu PDO auseinandergesetzt hat, wird das Meiste schon verstanden haben. Ansonsten solltet ihr dem Link folgen und euch das genau durchlesen. Außerdem fehlen noch ein paar Methoden, die erst später kommen, da ich hier noch nicht auf Details eingehen kann.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt