Datenbank Klasse verwenden: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Datensätze lesen)
(Datensätze schreiben)
Zeile 34: Zeile 34:
  
 
== Datensätze schreiben ==
 
== Datensätze schreiben ==
 +
 +
Datesätze können auch über die Datenbank-Klasse geschrieben werden. Es gibt dafür zwei Möglichkeiten.
 +
 +
'''Einzelne Werte per Wildcard setzten'''
 +
 +
<code lng="php">
 +
$this->Database->prepare("UPDATE tl_log SET source = ? WHERE id=?")->execute('BE', 12345);
 +
</code>
 +
 +
'''Mehrere Werte per set-Methode setzten'''
 +
<code lng="php">
 +
 +
$set = array('tstamp' => time(), 'source' => 'BE', 'action' => 'GENERAL');
 +
$this->Database->prepare("UPDATE tl_log %s WHERE id=?")->set($set)->execute(12345);
 +
 +
</code>
  
 
== Das Ergebnis auswerten ==
 
== Das Ergebnis auswerten ==

Version vom 18. Februar 2011, 11:07 Uhr

MsgError.png Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.

Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis.


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

Datensätze lesen

Lesen von Datensätzen ohne Bedingung

$result = $this->Database->prepare("SELECT * FROM tl_log")->execute();

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ütz allerdings nicht vor boshaften Benutzereingaben. Diese sollten immer mit der Input-Klasse verarbeitet werden!

Datensätze schreiben

Datesä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);

Das Ergebnis auswerten

Tipps & Tricks

Ansichten
Meine Werkzeuge

Contao Community Documentation

Ich überlege gerade warum Contao Developer einen Hangout mit Bildübertragung machen... abgesehen von TheTril sind wir da alle relativ hässliche Typen wo Audio deutlich reichen würde. *g*

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge