Datenbank Klasse verwenden: Unterschied zwischen den Versionen
Aus Contao Community Documentation
(Zusatz über Import des "Datenbank-Moduls" hinzugefügt.) |
(Beispeil einer Ausgabe nach Lesezugriff) |
||
Zeile 27: | Zeile 27: | ||
<source lang="php"> | <source lang="php"> | ||
$result = $this->Database->prepare("SELECT * FROM tl_log")->execute(); | $result = $this->Database->prepare("SELECT * FROM tl_log")->execute(); | ||
+ | </source> | ||
+ | |||
+ | '''Ausgeben der Datensätze''' | ||
+ | |||
+ | <source lang="php"> | ||
+ | echo $result->numRows; // Anzahl der gefundenen Datensätze ausgeben | ||
+ | echo $result->id; // ID des 1. Datensatzes ausgeben | ||
+ | // Und alle anderen ID's ausgeben | ||
+ | while($result->next()) | ||
+ | { | ||
+ | echo $result->id; | ||
+ | } | ||
</source> | </source> | ||
Version vom 7. August 2014, 12:32 Uhr
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
Inhaltsverzeichnis
Informationen zur Datenbank-Klasse
Contao bietet für Entwickler eine Klasse an, um mit der Datenbank zu kommunizieren. Diese sollte beim Entwickeln von Erweiterungen unbedingt verwendet werden!
Die Datenbank-Klasse bietet mehrere Vorteile:
- Die Daten werden "gesäubert" und störende Zeichen maskiert
- Ein Objekt der Klasse Database_Result wird zurückgegeben. Dieses enthält alle Informationen zum Query
- Ersparnis von Schreibarbeit
Operationen auf der Datenbank
Die Beispiele setzen voraus, dass zuvor das Datenbank-Modul geladen wurde:
$this->import('Database');
Datensätze lesen
Lesen von Datensätzen ohne Bedingung
$result = $this->Database->prepare("SELECT * FROM tl_log")->execute();
Ausgeben der Datensätze
echo $result->numRows; // Anzahl der gefundenen Datensätze ausgeben echo $result->id; // ID des 1. Datensatzes ausgeben // Und alle anderen ID's ausgeben while($result->next()) { echo $result->id; }
Lesen von Datensätzen mit Bedingung
$result = $this->Database->prepare("SELECT * FROM tl_log WHERE id=?")->execute(1); $result = $this->Database->prepare("SELECT * FROM tl_log WHERE id=? OR id=?")->execute(1, 5);
Die Fragezeichen sind Wildcards. Sie werden der Reihenfolge nach von den Parametern der execute-Funktion ersetzt. Dabei werden die parameter escaped, also für die Datenbank aufbereitet. Das schützt allerdings nicht vor boshaften Benutzereingaben. Diese sollten immer mit der Input-Klasse verarbeitet werden!
Datensätze schreiben
Datensätze können auch über die Datenbank-Klasse geschrieben werden. Es gibt dafür zwei Möglichkeiten.
Einzelne Werte per Wildcard setzten
$this->Database->prepare("UPDATE tl_log SET source = ? WHERE id=?")->execute('BE', 12345);
Mehrere Werte per set-Methode setzten
$set = array('tstamp' => time(), 'source' => 'BE', 'action' => 'GENERAL'); $this->Database->prepare("UPDATE tl_log %s WHERE id=?")->set($set)->execute(12345);
Diese Methode funktioniert natürlich auch mit einem INSERT Statement.