Advanced SQL - Praxistutorial 1 - Die Datenbank-Klasse
1. Die Abschnitte
- Vorwort
- Die Datenbank-Klasse
- Verbindungsaufbau
- Login
- Die grundsätzliche Vorgehensweise
- Die Übersichtsliste
- Mitglied auf dem Marktplatz anzeigen
- Mitglied anbieten Teil 1
- Mitglied anbieten Teil 2
- Direktangebot machen Teil 1
- Direktangebot machen Teil 2
- Tauschangebot machen Teil 1
- Tauschangebot machen Teil 2
- Tauschangebot machen Teil 3
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(SERVER, USER, PW, $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