Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

eZDB: die Datenbankschicht

Die eZDB-Methoden, die Erweiterungen verwenden - arrayQuery() mit offset und limit, query(), escapeString(), generateSQLINStatement(), Transaktionen, lastSerialID(), portable SQL-Hilfen - und sichere Werte.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-8-reference/ezdb.md

On this page

This page is a translation. Read the English original

eZDB: die Datenbankschicht

Teil 8, Referenz 4. eZDB::instance() gibt die Datenbankverbindung der Website zurück, ein Objekt einer Klasse, die eZDBInterface (lib/ezdb/classes/ezdbinterface.php) erweitert: eZMySQLiDB, eZPostgreSQLDB, eZSQLite3DB, expMongoDB oder ein Handler aus einer Erweiterung. Programmieren Sie gegen die Schnittstelle, dann läuft Ihr Code auf jeder Engine mit SQL. Für Ihre eigenen Tabellen bevorzugen Sie eZPersistentObject (eZPersistentObject), das auch mit MongoDB funktioniert. Wie Sie alten Datenbankcode aktualisieren, steht in Datenbankcode für PHP 8 und jede Engine.

Lesen und Schreiben

MethodeVerwendung
arrayQuery( $sql, $params = array(), $server = false )führt ein SELECT aus und gibt alle Zeilen als Arrays zurück; $params nimmt offset und limit auf, außerdem column, um eine Spalte als einfache Liste zurückzugeben
query( $sql, $server = false )führt jede andere Anweisung aus; gibt ein Ergebnis-Handle oder false zurück
lastSerialID( $table = false, $column = false )die ID der gerade eingefügten Zeile
escapeString( $str )maskiert eine Zeichenkette zur Verwendung in einfachen Anführungszeichen
generateSQLINStatement( $elements, $columnName = '', $not = false, $unique = true, $type = false )column IN ( ... ) für eine Liste, wobei jeder Wert in $type umgewandelt wird (zum Beispiel 'int')
errorMessage()der Text des letzten Fehlers
databaseName()der Name der Engine (mysql, postgresql, sqlite, mongo ...)
<?php
$db = eZDB::instance();
$parentID = (int)$parentNodeID;
$rows = $db->arrayQuery( "SELECT id, name FROM myext_item WHERE parent_id = $parentID ORDER BY name",
                         array( 'offset' => 0, 'limit' => 20 ) );
$ids = $db->arrayQuery( 'SELECT id FROM myext_item', array( 'column' => 'id' ) );

Immer sichere Werte

WertVorgehen
Ganzzahl(int)$value
Zeichenkette"'" . $db->escapeString( (string)$value ) . "'"
Liste von Ganzzahlen$db->generateSQLINStatement( $ids, 'id', false, true, 'int' )
ein Spalten- oder Tabellenname aus einer Eingabenie; wählen Sie aus einer festen Liste in Ihrem Code

Transaktionen

<?php
$db = eZDB::instance();
$db->begin();
$db->query( 'DELETE FROM myext_item_tag WHERE item_id = ' . (int)$itemID );
$db->query( 'INSERT INTO myext_item_tag ( item_id, tag_id ) VALUES ( ' . (int)$itemID . ', ' . (int)$tagID . ' )' );
$db->commit();

begin() und commit() lassen sich verschachteln: Der Kernel zählt sie mit, und nur das äußerste commit() schreibt die Transaktion fest. rollback() macht die ganze Transaktion rückgängig. Jedes begin() braucht auf jedem Weg, auch auf Fehlerwegen, genau ein commit() oder rollback(), sonst bleibt die Transaktion bis zum Ende des Requests offen.

Portable SQL-Hilfen

MethodeStatt
concatString( $strings = array() )CONCAT() oder ||
subString( $string, $from, $len = null )Varianten von SUBSTRING()
bitAnd( $arg1, $arg2 ), bitOr( $arg1, $arg2 )von Hand geschriebenem & und |

Nicht unter MongoDB

Auf einer Installation, die ihre Inhalte in MongoDB speichert, führt der Adapter expMongoDB kein SQL aus: arrayQuery() gibt keine Zeilen zurück und protokolliert eine Warnung (MongoDB-Unterstützung im Kernel). Code, der dort funktionieren muss, verwendet eZPersistentObject.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x