dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
dbxDB Class Reference

Zentrale Datenbank- und DD-Systemklasse von DBX. More...

Inheritance diagram for dbxDB:
dbxDD myDB myDD

Public Member Functions

 __construct ()
 Initialisiert das DBX-Datenbankobjekt mit Standardwerten und lädt den zentralen Validator.
 __destruct ()
 Gibt interne Referenzen beim Zerstören des Objekts frei.
 clear_db_error ()
 Setzt den letzten DB-Fehlerzustand zurueck.
 get_error_status ()
 Liefert die Fehlerart des letzten DB-Aufrufs.
 get_error_text ()
 Liefert den Fehlertext des letzten DB-Aufrufs.
 get_insert_id ()
 Liefert die letzte Insert-ID nach erfolgreichem insert().
 isSQLiteDatabaseLocked ($databasePath)
 Prüft, ob eine SQLite-Datenbank aktuell gelockt ist.
 dbConnect ($server, $dbType, $dbHost, $dbName='', $dbUser='', $dbPass='', $dbPort='')
 Stellt eine Verbindung zu einer Datenbank her und speichert sie in $this->db[$server].
 can_connect_database_config (array $dbConfig, bool $withDatabase=false)
 ensure_database_exists (string $server, array $dbConfig)
 connect_db_server (string $server)
 Verbindet sich mit einem angegebenen Datenbankserver.
 db_server_config_is_active (string $server, array $dbConfig)
 Prueft den Aktivstatus eines konfigurierten SQL-Servers.
 get_db_type ($server)
 Ermittelt den Datenbanktyp für einen Server.
 get_dd_server (string $dd)
 Ermittelt den Server einer Datenbeschreibung (DD).
 get_csv_seperator ($dd)
 Gibt das CSV-Trennzeichen für eine DD zurück.
 get_dd_primary (string $dd)
 Ermittelt den Primärschlüssel einer Datenbeschreibung (DD).
 get_dd_sort_flds ($dd)
 Platzhalter für Sortierfelder einer DD.
 get_dd_sort_desc ($dd)
 Platzhalter für Sortierrichtung einer DD.
 add_db_fld ($server, $table, $field)
 Fügt ein neues Feld zu einer bestehenden Tabelle in der Datenbank hinzu.
 get_dd_table ($dd, $rec=0)
 Gibt den Tabellennamen oder die komplette Table-Definition einer DD zurück.
 get_dd_autosync ($dd, $rec=0)
 Gibt das Autosync-Flag einer DD zurück.
 load_dd (string $dd)
 Lädt eine Datenbeschreibung (DD) aus Datei und speichert sie im Session-Cache.
 get_dd_file (string $dd)
 Liefert den Dateipfad einer geladenen DD fuer Editor-Marker.
 query (string $server, string $sql)
 Führt eine SQL-Abfrage auf dem angegebenen Server aus.
 begin (string $dd)
 Startet eine Transaktion für die Datenbank der angegebenen DD.
 rollback (string $dd)
 Führt ein Rollback für die Datenbank der angegebenen DD aus.
 commit ($dd)
 Committet eine laufende Transaktion der Datenbank einer DD.
 exec (string $server, string $sql)
 Führt eine SQL-Anweisung aus, die keine Daten zurückgibt (z.
 select_query (string $server, string $sql, string $dd='')
 Fuehrt eine rohe SELECT-Abfrage auf einem konfigurierten DB-Server aus.
 create_select (string $select, array $flds, int $and=1)
 Erzeugt eine SQL-WHERE-Bedingung für eine Volltextsuche über mehrere Felder.
 insert_query ($server, $sql)
 Führt eine INSERT-Abfrage aus und gibt die zuletzt eingefügte ID zurück.
 delete_query ($server, $sql)
 Führt eine DELETE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
 exec_query ($server, $sql)
 Führt eine generische SQL-Exec-Anweisung aus.
 rawQuery (string $server, string $query)
 Führt eine rohe SQL-Abfrage auf dem angegebenen Server aus.
 select (string $dd='', $where='', $columns=' *', $orderby='', $asc_desc='ASC', $groupby='', $max=0, $offset=0, $verify_access=1)
 Führt eine SELECT-Abfrage auf der angegebenen DD aus.
 select1 (string $dd, $where='', $columns=' *', $verify_access=1)
 Führt eine SELECT-Abfrage aus und gibt genau einen Datensatz zurück.
 select_tree (string $folder_dd, string $item_dd='', array $opt=[])
 Liefert generische Tree-Daten aus einer Parent-Tabelle und optionalen Items.
 get_new_record (string $dd, array $field_values=[])
 Erstellt einen neuen Datensatz mit Standardwerten.
 insert ($dd, $field_values, $verify_access=1, $verify_fields=1, $verify_values=1, $trace=1)
 Fügt einen neuen Datensatz in die Datenbank ein.
 update ($dd, $field_values, $where, $verify_access=1, $verify_fields=1, $verify_values=1, $trace=1)
 Führt ein UPDATE-Statement auf einer Tabelle aus.
 update_query ($server, $sql)
 Führt eine UPDATE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
 save ($dd, $field_values, $where, $verify_access=1, $verify_fields=1, $verify_values=1, $trace=1)
 Speichert einen Datensatz mit UPSERT-ähnlichem Verhalten.
 delete ($dd, $where, $verify_access=1, $trace=1)
 Löscht Datensätze aus einer Tabelle anhand einer WHERE-Bedingung.
 count ($dd, $where='', $server='')
 Zählt Datensätze einer DD oder Tabelle.
 empty ($dd)
 Leert eine Tabelle anhand ihrer DD.
 delete_tab ($dd)
 Leert eine Datenbank-Tabelle anhand ihrer DD und setzt die ID zurueck.
 optimize_tab ($dd)
 Optimiert eine Tabelle anhand ihrer DD nach Wartungsaktionen.
 get_table_exist ($dd, $dbtab='')
 Prueft, ob eine Tabelle existiert.
 get_dd_exist ($dd)
 Prüft, ob eine DD-Datei im Standardmodul dbx existiert.
 get_db_tables ($server, $not='sqlite_sequence')
 Liefert alle Tabellen eines Servers mit Datensatzanzahl zurück.
 get_dd_table_def ($dd)
 Gibt die komplette Table-Definition einer DD zurück.
 get_dd_fields ($dd, $label=0)
 Gibt die Felddefinitionen einer DD zurück.
 get_rpt_fields ($dd, $flds, $label=1)
 Ermittelt die Report-Felder einer DD für eine übergebene Feldliste.
 get_dd_cols (string $dd)
 Gibt alle DD-Spaltennamen als CSV-String zurück.
 get_dd_grid_cols (string $dd)
 Erzeugt die neue Grid-Column-Syntax aus einer DD.
 map_dd_type_to_grid_type (string $ddType)
 Mappt DD-Feldtypen auf Grid-Feldtypen.
 get_convert_array ($field, $array, $convert='auto')
 Konvertiert Array-Werte automatisch in String-/Serialisierungsformate.
 check_access (string $mode, string $dd)
 Prüft die Zugriffsrechte für eine Operation auf einer DD.
 check_values ($dd, $field_values, $verify_values=1)
 Überprüft und validiert übergebene Feldwerte anhand der DD-Regeln.
 check_fields ($dd, $field_values)
 Filtert ungültige Felder aus einem Eingabearray heraus.
 empty_record (string $dd)
 Erstellt einen leeren Datensatz mit Standardwerten basierend auf der DD.
 normalize_where (string $dd, $where='', int $owner=0)
 Normalisiert und erweitert eine WHERE-Bedingung für SQL-Abfragen.
 check_where ($where, $owner=0, $dd='')
 escape ($string, $server)
 Escaped einen String für die sichere Verwendung in einer SQL-Abfrage.
 escape_like ($value, $server)
 Escaped einen User-Suchwert fuer SQL-LIKE.
 build_search_where (string $dd, $search, array $likeFields, array $equalFields=array(), string $mode='starts_with')
 Baut eine sichere Such-WHERE fuer einfache Report-Suchen.

Public Attributes

 $db = array()
 $pdo = null
 $_connected = 0
 $_server = ''
 $_dbtype = ''
 $_insert_id = 0
 $_update_count = 0
 $_delete_count = 0
 $_insert_count = 0
 $_dbMessage = ''
 $oValidator = null
 $_validation_error = 0
 $_validation_warning = 0
 $_validation_error_flds = array()
 $_validation_warning_flds = array()
 $_validatior_rules = 0
 $_validatior_type = 1
 $_validatior_error = 0
 $_validatior_mode = 'clean'
 $_fld_id
 $_error = ''
 $_query = ''
 $_report_error = 1
 1 = DB-Fehler automatisch in dbxSysMsg schreiben, 0 = nicht
 $_error_status = ''
 db|sql|access
 $_error_text = ''
int $_connect_timeout = 3
 Maximale Wartezeit fuer einen DB-Verbindungsaufbau in Sekunden.

Protected Member Functions

 sqlite_sequence_exists (string $server)
 Prueft ohne Schema-Warnung, ob SQLite seine AUTOINCREMENT-Tabelle hat.

Detailed Description

Zentrale Datenbank- und DD-Systemklasse von DBX.

Zweck

Diese Klasse ist die zentrale Infrastruktur für:

  • Datenbankverbindungen
  • DD-Auflösung und DD-Cache
  • Tabellen-/Feld-/Server-Metadaten
  • CRUD-Operationen
  • Access-Prüfung
  • Feld-/Wert-Validierung
  • Trace-/Audit-Schreibung
  • Hilfsfunktionen für Report/Grid/Tabellen-Metadaten

Architekturprinzip

  • DDs bleiben die fachliche Quelle für Tabellen, Felder, Rechte und Defaults.
  • DB-Verbindungen werden lazy aufgebaut und wiederverwendet.
  • Bestehende DBX-Mechaniken werden genutzt, nicht parallel neu erfunden.
  • Änderungen in dieser Klasse müssen minimal, stabil und systemkonform bleiben.

DD-Konzept

DD-Dateien liegen unter: dbx/modules/{modul}/dd/*.dd.php

Eine DD definiert typischerweise:

  • $table
  • optional $fields
  • optional $indexes

Unterstützte DD-Aufrufe

  • meinDD
  • meinModul|meinDD
  • modul|meinDD (modul = Platzhalter für aktives Modul)

Beispiel

$db = dbx()->get_system_obj('dbxDB');
$rows = $db->select('kunden', "status='aktiv'");
$rec = $db->select1('crm|adresse', 15);
$id = $db->insert('kunden', [
'name' => 'Muster GmbH',
'city' => 'Darmstadt'
]);
$ok = $db->update('kunden', [
'city' => 'Frankfurt'
], 15);
$ok = $db->save('kunden', [
'name' => 'Test'
], 15);
DBX schema administration.

Definition at line 62 of file dbxDB.class.php.

Constructor & Destructor Documentation

◆ __construct()

dbxDB::__construct ( )

Initialisiert das DBX-Datenbankobjekt mit Standardwerten und lädt den zentralen Validator.

Returns
void

Reimplemented in dbxDD.

Definition at line 121 of file dbxDB.class.php.

◆ __destruct()

dbxDB::__destruct ( )

Gibt interne Referenzen beim Zerstören des Objekts frei.

Returns
void

Definition at line 143 of file dbxDB.class.php.

Member Function Documentation

◆ add_db_fld()

dbxDB::add_db_fld ( $server,
$table,
$field )

Fügt ein neues Feld zu einer bestehenden Tabelle in der Datenbank hinzu.

Zweck

Erzeugt abhängig vom DB-Typ das passende SQL für ALTER TABLE ... ADD COLUMN. Die Methode erzeugt aktuell das SQL und verbindet sich mit dem Server. Zusätzliche Index-/Primary-SQLs werden geloggt.

Hinweis

Diese Funktion ist bewusst minimal gehalten und ändert die bestehende DBX-Logik nicht grundsätzlich.

Parameters
string$serverDer Name des Datenbankservers
string$tableDer Name der Tabelle
array$fieldFelddefinition:
  • name
  • type
  • length
  • default
  • index
Returns
bool True bei Erfolg, sonst false

Definition at line 961 of file dbxDB.class.php.

References $field, $server, $table, connect_db_server(), empty(), and get_db_type().

◆ begin()

dbxDB::begin ( string $dd)

Startet eine Transaktion für die Datenbank der angegebenen DD.

Parameters
string$ddName der Datenbeschreibung
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 1477 of file dbxDB.class.php.

References $server, and get_dd_server().

◆ build_search_where()

dbxDB::build_search_where ( string $dd,
$search,
array $likeFields,
array $equalFields = array(),
string $mode = 'starts_with' )

Baut eine sichere Such-WHERE fuer einfache Report-Suchen.

  • validiert den Suchtext mit sqlsearch
  • validiert alle Feldnamen gegen die DD
  • escaped LIKE- und Exact-Werte zentral
Parameters
string$ddDatenbeschreibung
mixed$searchUser-Suchwert
array$likeFieldsFelder fuer LIKE
array$equalFieldsFelder fuer exakte Suche
string$modestarts_with|contains|ends_with|exact
Returns
string SQL-WHERE oder leerer String

Definition at line 4306 of file dbxDB.class.php.

◆ can_connect_database_config()

dbxDB::can_connect_database_config ( array $dbConfig,
bool $withDatabase = false )

Definition at line 477 of file dbxDB.class.php.

◆ check_access()

dbxDB::check_access ( string $mode,
string $dd )

Prüft die Zugriffsrechte für eine Operation auf einer DD.

Zugriffssystem

  • 0 = kein Zugriff
  • 1 = voller Zugriff
  • 2 = Owner-Zugriff

Verwendete DD-Rechte

  • insert → create
  • update → update
  • delete → delete
  • select → read
Parameters
string$modeOperation: insert|update|delete|select
string$ddDatenbeschreibung
Returns
int 0|1|2

Definition at line 3797 of file dbxDB.class.php.

References $table, and get_dd_table().

Referenced by count(), delete(), insert(), save(), select(), and update().

◆ check_fields()

dbxDB::check_fields ( $dd,
$field_values )

Filtert ungültige Felder aus einem Eingabearray heraus.

Es werden nur Felder übernommen, die in der DD definiert sind. Bei ungültiger oder leerer DD-Feldliste wird defensiv ein leeres Ergebnis zurückgegeben.

Parameters
string$ddDatenstrukturdefinition
array$field_valuesEingabewerte
Returns
array Gefilterte Feldwerte

Definition at line 3989 of file dbxDB.class.php.

References $field, empty(), and get_dd_fields().

Referenced by insert(), and update().

◆ check_values()

dbxDB::check_values ( $dd,
$field_values,
$verify_values = 1 )

Überprüft und validiert übergebene Feldwerte anhand der DD-Regeln.

Die bestehende DBX-Logik bleibt erhalten:

  • optionale Regelprüfung
  • optionale Typ-/Längenprüfung
  • Fehler/Warnungen je nach Validator-Modus
  • optionales Cleanen oder Unsetzen ungültiger Werte

Stabilitätsverbesserungen

  • fehlende DD-Keys werden defensiv behandelt
  • 0 / '0' bleiben valide prüfbare Werte
  • Array-Werte werden weiterhin vor Typprüfung konvertiert
Parameters
string$ddDatenstrukturdefinition
array$field_valuesZu überprüfende Feldwerte
int$verify_valuesGibt an, ob Werte überprüft werden sollen
Returns
array Validierte und ggf. bereinigte Feldwerte

Definition at line 3878 of file dbxDB.class.php.

References $field, $fields, get_convert_array(), and get_dd_fields().

Referenced by insert(), and update().

◆ check_where()

dbxDB::check_where ( $where,
$owner = 0,
$dd = '' )

Definition at line 4208 of file dbxDB.class.php.

References get_dd_primary(), and get_dd_table_def().

Referenced by normalize_where(), and save().

◆ clear_db_error()

dbxDB::clear_db_error ( )

Setzt den letzten DB-Fehlerzustand zurueck.

Returns
void

Definition at line 152 of file dbxDB.class.php.

Referenced by insert(), save(), select(), and update().

◆ commit()

dbxDB::commit ( $dd)

Committet eine laufende Transaktion der Datenbank einer DD.

  • MySQL: normales PDO-Commit
  • SQLite: COMMIT
  • andere DBs: normales PDO-Commit
Parameters
string$ddName der Datenbeschreibung
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 1606 of file dbxDB.class.php.

References $pdo, $server, connect_db_server(), empty(), get_db_type(), and get_dd_server().

◆ connect_db_server()

dbxDB::connect_db_server ( string $server)

Verbindet sich mit einem angegebenen Datenbankserver.

Zweck

  • verbindet normale Config-Server
  • erkennt SQLite-Dateien im Modul-/dbx-Kontext automatisch
  • ergänzt temporär eine Laufzeit-DB-Konfiguration für .db3

Unterstützte Serverangaben

  • normaler Config-Servername
  • meinedb.db3
  • modul|meinedb.db3

Suchlogik bei .db3

  • mit Modulpräfix: zuerst angegebenes Modul, dann Fallback dbx
  • ohne Modulpräfix: zuerst aktives Modul, dann Fallback dbx
  • modul|... nutzt das aktuell aktive Modul als Platzhalter

Beispiel

$this->connect_db_server('default');
$this->connect_db_server('crm|kunden.db3');
connect_db_server(string $server)
Verbindet sich mit einem angegebenen Datenbankserver.
Parameters
string$serverName des Datenbankservers
Returns
int 1 bei erfolgreicher Verbindung, 0 bei Fehlschlag

Definition at line 638 of file dbxDB.class.php.

References $config, $dir, $server, dbx_config_path_store(), dbx_get_base_dir(), and dbx_os_path_file().

Referenced by add_db_fld(), commit(), escape(), exec(), get_db_tables(), get_table_exist(), insert(), dbxDD\restore(), and update().

◆ count()

dbxDB::count ( $dd,
$where = '',
$server = '' )

Zählt Datensätze einer DD oder Tabelle.

  • Bei DD-Aufruf werden Tabelle und Server aus der DD ermittelt.
  • Bei explizitem $server wird $dd als Tabellenname behandelt.
  • where = 'new' liefert direkt 0.

Der DB-Zugriff läuft über den zentralen Query-Pfad, damit Fehlerbehandlung und Retry-Verhalten konsistent bleiben.

Parameters
string$ddDD-Name oder Tabellenname
string$whereWHERE-Bedingung
string$serverOptional expliziter Server
Returns
int Anzahl, -1 oder -2

Definition at line 2920 of file dbxDB.class.php.

References $count, $server, check_access(), empty(), get_dd_server(), get_dd_table(), get_error_status(), normalize_where(), and query().

Referenced by dbxDD\backup(), get_db_tables(), dbxDD\get_dd_tables(), insert(), dbxDD\restore(), save(), and dbxDD\sync_dd_to_db().

◆ create_select()

dbxDB::create_select ( string $select,
array $flds,
int $and = 1 )

Erzeugt eine SQL-WHERE-Bedingung für eine Volltextsuche über mehrere Felder.

Beispiel

$where = $this->create_select('max mustermann', [
'name' => 'name',
'city' => 'city'
]);
create_select(string $select, array $flds, int $and=1)
Erzeugt eine SQL-WHERE-Bedingung für eine Volltextsuche über mehrere Felder.
Parameters
string$selectSuchbegriff(e), getrennt durch Leerzeichen
array$fldsArray der zu durchsuchenden Spalten
int$and1 = AND, 0 = OR
Returns
string SQL-WHERE-Bedingung

Definition at line 1785 of file dbxDB.class.php.

◆ db_server_config_is_active()

dbxDB::db_server_config_is_active ( string $server,
array $dbConfig )

Prueft den Aktivstatus eines konfigurierten SQL-Servers.

SQLite-/db3-Dateien sind immer aktiv. Bestehende SQL-Server ohne activ-Eintrag gelten aus Kompatibilitaetsgruenden ebenfalls als aktiv.

Definition at line 790 of file dbxDB.class.php.

References $server.

◆ dbConnect()

dbxDB::dbConnect ( $server,
$dbType,
$dbHost,
$dbName = '',
$dbUser = '',
$dbPass = '',
$dbPort = '' )

Stellt eine Verbindung zu einer Datenbank her und speichert sie in $this->db[$server].

Unterstützte Datenbanktypen

sqlite, mysql, pgsql, sqlsrv, oci, firebird, cubrid, dblib, ibm, informix, odbc.

Stabilitätsregel

Bei unbekanntem Datenbanktyp wird sauber ein Fehler gesetzt und protokolliert, ohne unkontrolliert nach außen abzubrechen.

Parameters
string$serverName des Servers (Schlüssel im $this->db-Array)
string$dbTypeTyp der Datenbank
string$dbHostHostname oder Datei für SQLite
string$dbNameName der Datenbank
string$dbUserBenutzername
string$dbPassPasswort
string$dbPortPort
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 361 of file dbxDB.class.php.

References $server, and dbx_config_path_resolve().

Referenced by dbxDD\ensure_sqlite_db_file_for_dd().

◆ delete()

dbxDB::delete ( $dd,
$where,
$verify_access = 1,
$trace = 1 )

Löscht Datensätze aus einer Tabelle anhand einer WHERE-Bedingung.

Ablauf

  • Access prüfen
  • WHERE normalisieren
  • optional Before-Rows für Trace lesen
  • DELETE ausführen
  • optional Trace mit gelöschten Vorwerten schreiben
Parameters
string$ddDatenbeschreibung
mixed$whereWHERE-Bedingung
int$verify_accessZugriff prüfen
int$traceTrace aktivieren
Returns
int 1|0|-1|-2

Definition at line 2796 of file dbxDB.class.php.

References $count, $server, check_access(), delete_query(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), insert(), normalize_where(), and select().

◆ delete_query()

dbxDB::delete_query ( $server,
$sql )

Führt eine DELETE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.

Parameters
string$serverDatenbankserver
string$sqlSQL-Delete-Statement
Returns
int Anzahl betroffener Zeilen oder -2

Definition at line 1853 of file dbxDB.class.php.

References $count, $server, and query().

Referenced by delete().

◆ delete_tab()

dbxDB::delete_tab ( $dd)

Leert eine Datenbank-Tabelle anhand ihrer DD und setzt die ID zurueck.

Verwendung: Admin-/Wartungsfunktionen koennen damit gezielt Tabellen leeren, wenn die Datenquelle wirklich dbxDB ist.

Parameters
string$ddDatenbeschreibung
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 3104 of file dbxDB.class.php.

References empty(), and optimize_tab().

◆ empty()

dbxDB::empty ( $dd)

◆ empty_record()

dbxDB::empty_record ( string $dd)

Erstellt einen leeren Datensatz mit Standardwerten basierend auf der DD.

Beispiel

$empty = $this->empty_record('kunden');
// Rückgabe: [ [ 'id' => 0, 'name' => '', ... ] ]
empty_record(string $dd)
Erstellt einen leeren Datensatz mit Standardwerten basierend auf der DD.
Parameters
string$ddDatenstrukturdefinition
Returns
array Leerer Datensatz als Array in Array-Hülle

Definition at line 4023 of file dbxDB.class.php.

References get_dd_fields().

Referenced by get_new_record(), and select1().

◆ ensure_database_exists()

dbxDB::ensure_database_exists ( string $server,
array $dbConfig )

Definition at line 516 of file dbxDB.class.php.

References $server.

◆ escape()

dbxDB::escape ( $string,
$server )

Escaped einen String für die sichere Verwendung in einer SQL-Abfrage.

Hinweis

Diese Methode dient nur zum Escapen einzelner Strings. Für INSERT/UPDATE wird weiterhin mit Prepared Statements gearbeitet.

Parameters
string$stringZu escapender String
string | int$serverServerindex
Returns
string Escapeter String

Definition at line 4262 of file dbxDB.class.php.

References $server, and connect_db_server().

Referenced by escape_like(), and dbxDD\sql_quote().

◆ escape_like()

dbxDB::escape_like ( $value,
$server )

Escaped einen User-Suchwert fuer SQL-LIKE.

Der Wert wird zuerst als LIKE-Pattern neutralisiert (%/_/) und danach fuer den konkreten Datenbankserver quoted. Die Rueckgabe ist ohne aeussere Quotes und wird von build_search_where() eingefasst.

Parameters
string$valueUser-Suchwert
string$serverDatenbankserver
Returns
string Escapeter LIKE-Wert

Definition at line 4282 of file dbxDB.class.php.

References $server, and escape().

◆ exec()

dbxDB::exec ( string $server,
string $sql )

Führt eine SQL-Anweisung aus, die keine Daten zurückgibt (z.

B. UPDATE, DELETE, DDL).

Parameters
string$serverDatenbankserver
string$sqlSQL-Abfrage
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 1665 of file dbxDB.class.php.

References $server, connect_db_server(), and if.

Referenced by exec_query(), and optimize_tab().

◆ exec_query()

dbxDB::exec_query ( $server,
$sql )

Führt eine generische SQL-Exec-Anweisung aus.

Parameters
string$serverDatenbankserver
string$sqlSQL-Anweisung
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 1878 of file dbxDB.class.php.

References $server, and exec().

Referenced by dbxDD\add_db_field_from_dd(), dbxDD\create_db_index(), dbxDD\create_db_tab(), dbxDD\create_db_tab_from_fields(), dbxDD\drop_db_tab(), empty(), dbxDD\empty_db_table(), and dbxDD\sync_dd_to_db().

◆ get_convert_array()

dbxDB::get_convert_array ( $field,
$array,
$convert = 'auto' )

Konvertiert Array-Werte automatisch in String-/Serialisierungsformate.

Modi

  • auto
  • serial
  • list

Beispiel

$value = $this->get_convert_array('tags', ['a', 'b'], 'auto');
// Ergebnis: "a,b"
get_convert_array($field, $array, $convert='auto')
Konvertiert Array-Werte automatisch in String-/Serialisierungsformate.
Parameters
string$fieldFeldname
mixed$arrayWert oder Array
string$convertModus: auto|serial|list
Returns
mixed Konvertierter Wert

Definition at line 3729 of file dbxDB.class.php.

References $field.

Referenced by check_values(), and update().

◆ get_csv_seperator()

dbxDB::get_csv_seperator ( $dd)

Gibt das CSV-Trennzeichen für eine DD zurück.

Falls in der DD kein CSV-Separator definiert ist, wird ; verwendet.

Parameters
string$ddName der Datenbeschreibung
Returns
string CSV-Trennzeichen

Definition at line 870 of file dbxDB.class.php.

References load_dd().

◆ get_db_tables()

dbxDB::get_db_tables ( $server,
$not = 'sqlite_sequence' )

Liefert alle Tabellen eines Servers mit Datensatzanzahl zurück.

Hinweis

Die Rückgabestruktur bleibt unverändert:

Falls das Zählen fehlschlägt, wird count auf -1 gesetzt.

Parameters
string$serverDatenbankserver
string$notTabellenname, der ausgeschlossen werden soll
Returns
array Liste der Tabellen

Definition at line 3388 of file dbxDB.class.php.

References $count, $server, connect_db_server(), count(), get_db_type(), and rawQuery().

◆ get_db_type()

dbxDB::get_db_type ( $server)

Ermittelt den Datenbanktyp für einen Server.

Liest die Konfiguration aus dbx-Config und gibt den Typ zurück. Fallback ist immer sqlite.

Unterstützt zusätzlich SQLite-Dateiangaben:

  • meinedb.db3
  • modul|meinedb.db3
Parameters
string$serverName des DB-Servers
Returns
string Datenbanktyp (z.B. mysql, sqlite, pgsql, ...)

Definition at line 820 of file dbxDB.class.php.

References $config, and $server.

Referenced by add_db_fld(), dbxDD\backup(), dbxDD\build_create_table_sql(), dbxDD\build_schema_mapping(), dbxDD\build_sql_column_from_dd(), dbxDD\build_sync_plan_dd_to_db(), commit(), dbxDD\create_db_tab_from_fields(), empty(), dbxDD\empty_db_table(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), get_db_tables(), get_table_exist(), optimize_tab(), dbxDD\quote_ident(), select(), sqlite_sequence_exists(), and dbxDD\sync_db_to_dd().

◆ get_dd_autosync()

dbxDB::get_dd_autosync ( $dd,
$rec = 0 )

Gibt das Autosync-Flag einer DD zurück.

  • rec = 0 → nur der Autosync-Wert
  • rec = 1 → kompletter Autosync-Bereich, falls vorhanden
Parameters
string$ddName der Datenbeschreibung
int$rec0 = Wert, 1 = kompletter Datensatzbereich
Returns
mixed Autosync-Wert oder 0

Definition at line 1046 of file dbxDB.class.php.

References load_dd().

Referenced by dbxDD\get_dd_tables().

◆ get_dd_cols()

dbxDB::get_dd_cols ( string $dd)

Gibt alle DD-Spaltennamen als CSV-String zurück.

Parameters
string$ddName der Datenbeschreibung
Returns
string CSV-Liste der Spalten

Definition at line 3571 of file dbxDB.class.php.

References $fields, and get_dd_fields().

◆ get_dd_exist()

dbxDB::get_dd_exist ( $dd)

Prüft, ob eine DD-Datei im Standardmodul dbx existiert.

Parameters
string$ddName der DD
Returns
bool True wenn Datei existiert

Reimplemented in dbxDD.

Definition at line 3365 of file dbxDB.class.php.

References dbx_get_base_dir(), and dbx_os_path_file().

◆ get_dd_fields()

dbxDB::get_dd_fields ( $dd,
$label = 0 )

Gibt die Felddefinitionen einer DD zurück.

Optional können die Felder als Key/Label-Liste zurückgegeben werden.

  • label = 0 → komplette Felddefinitionen
  • label = 1 → Array feldname => label

Die Funktion arbeitet defensiv:

  • bei ungültiger DD oder fehlenden Felddefinitionen wird 0 zurückgegeben
  • bei label = 1 werden fehlende Labels sauber auf den Feldnamen zurückgeführt
Parameters
string$ddName der Datenbeschreibung
int$label0 = komplette Felddefinitionen, 1 = Name => Label
Returns
mixed Felddefinitionen oder 0

Definition at line 3495 of file dbxDB.class.php.

References $field, $fields, and load_dd().

Referenced by dbxDD\build_create_table_sql(), check_fields(), check_values(), empty_record(), get_dd_cols(), get_dd_grid_cols(), and get_rpt_fields().

◆ get_dd_file()

dbxDB::get_dd_file ( string $dd)

Liefert den Dateipfad einer geladenen DD fuer Editor-Marker.

Parameters
string$ddName der Datenbeschreibung
Returns
string Projekt-relativer DD-Pfad oder leer

Definition at line 1282 of file dbxDB.class.php.

References load_dd().

◆ get_dd_grid_cols()

dbxDB::get_dd_grid_cols ( string $dd)

Erzeugt die neue Grid-Column-Syntax aus einer DD.

Syntax

  • name[label]:type
  • optional :p / :!v
  • optional @gruppe

Die Funktion arbeitet defensiv bei unvollständigen DD-Felddefinitionen.

Parameters
string$ddName der Datenbeschreibung
Returns
string Kommagetrennte Grid-Definition

Definition at line 3606 of file dbxDB.class.php.

References $fields, and get_dd_fields().

◆ get_dd_primary()

dbxDB::get_dd_primary ( string $dd)

Ermittelt den Primärschlüssel einer Datenbeschreibung (DD).

Gibt den in der DD definierten Primärschlüssel zurück. Falls keiner vorhanden ist, wird id verwendet.

Parameters
string$ddName der Datenbeschreibung
Returns
string Primärschlüssel der DD oder id

Definition at line 895 of file dbxDB.class.php.

References load_dd().

Referenced by check_where(), delete(), insert(), and update().

◆ get_dd_server()

dbxDB::get_dd_server ( string $dd)

Ermittelt den Server einer Datenbeschreibung (DD).

Falls in der DD kein Server gesetzt ist, wird default verwendet.

Parameters
string$ddName der Datenbeschreibung
Returns
string Servername der DD oder default

Definition at line 843 of file dbxDB.class.php.

References load_dd().

Referenced by begin(), dbxDD\build_create_table_sql(), commit(), count(), dbxDD\create_db_tab(), delete(), empty(), dbxDD\ensure_sqlite_db_file_for_dd(), dbxDD\get_dd_tables(), get_table_exist(), insert(), optimize_tab(), rollback(), select(), and update().

◆ get_dd_sort_desc()

dbxDB::get_dd_sort_desc ( $dd)

Platzhalter für Sortierrichtung einer DD.

Parameters
string$ddName der Datenbeschreibung
Returns
string Standardmäßig ASC

Definition at line 931 of file dbxDB.class.php.

◆ get_dd_sort_flds()

dbxDB::get_dd_sort_flds ( $dd)

Platzhalter für Sortierfelder einer DD.

Parameters
string$ddName der Datenbeschreibung
Returns
string Aktuell leer

Definition at line 919 of file dbxDB.class.php.

◆ get_dd_table()

dbxDB::get_dd_table ( $dd,
$rec = 0 )

Gibt den Tabellennamen oder die komplette Table-Definition einer DD zurück.

  • rec = 0 → nur Tabellenname
  • rec = 1 → komplette Table-Definition

Bei fehlender oder ungültiger DD wird 0 zurückgegeben.

Parameters
string$ddName der Datenbeschreibung
int$rec0 = nur Tabellenname, 1 = komplette Table-Definition
Returns
mixed Tabellenname, Table-Definition oder 0

Definition at line 1016 of file dbxDB.class.php.

References load_dd().

Referenced by dbxDD\build_create_table_sql(), check_access(), count(), dbxDD\create_db_tab(), delete(), empty(), dbxDD\get_dd_tables(), get_table_exist(), insert(), optimize_tab(), select(), and update().

◆ get_dd_table_def()

dbxDB::get_dd_table_def ( $dd)

Gibt die komplette Table-Definition einer DD zurück.

Bei fehlender oder ungültiger DD wird 0 zurückgegeben.

Parameters
string$ddName der Datenbeschreibung
Returns
mixed Table-Definition oder 0

Definition at line 3462 of file dbxDB.class.php.

References $table, and load_dd().

Referenced by check_where(), delete(), insert(), select_tree(), and update().

◆ get_error_status()

dbxDB::get_error_status ( )

Liefert die Fehlerart des letzten DB-Aufrufs.

Returns
string db|sql|access oder leer bei Erfolg

Definition at line 163 of file dbxDB.class.php.

Referenced by count(), insert(), save(), select_query(), and update().

◆ get_error_text()

dbxDB::get_error_text ( )

Liefert den Fehlertext des letzten DB-Aufrufs.

Returns
string

Definition at line 172 of file dbxDB.class.php.

◆ get_insert_id()

dbxDB::get_insert_id ( )

Liefert die letzte Insert-ID nach erfolgreichem insert().

Returns
int

Definition at line 181 of file dbxDB.class.php.

◆ get_new_record()

dbxDB::get_new_record ( string $dd,
array $field_values = [] )

Erstellt einen neuen Datensatz mit Standardwerten.

Falls field_values nicht angegeben ist, wird der leere Datensatz des DD-Objekts verwendet. Nicht gesetzte Felder erhalten Standardwerte.

Parameters
string$ddDatenbank-Objekt
array$field_valuesInitialwerte
Returns
array Neuer Datensatz mit Standardwerten

Definition at line 2262 of file dbxDB.class.php.

References $field, and empty_record().

Referenced by insert().

◆ get_rpt_fields()

dbxDB::get_rpt_fields ( $dd,
$flds,
$label = 1 )

Ermittelt die Report-Felder einer DD für eine übergebene Feldliste.

Parameters
string$ddName der Datenbeschreibung
string$fldsFeldliste oder *
int$label1 = Label verwenden
Returns
array Feldliste für Reports

Definition at line 3542 of file dbxDB.class.php.

References $field, $fields, and get_dd_fields().

◆ get_table_exist()

dbxDB::get_table_exist ( $dd,
$dbtab = '' )

Prueft, ob eine Tabelle existiert.

  • Bei DD-Aufruf werden Tabelle und Server aus der DD ermittelt.
  • Bei explizitem Tabellenname in $dbtab wird $dd als Servername behandelt.
  • Fehlende Datenbanken werden als SysMsg mit klarem why gemeldet, nicht als SQL-Query-Fehler.
Parameters
string$ddDD-Name oder Servername
string$dbtabOptional expliziter Tabellenname
Returns
int 1 wenn Tabelle existiert, sonst 0

Definition at line 3219 of file dbxDB.class.php.

References $server, connect_db_server(), get_db_type(), get_dd_server(), and get_dd_table().

Referenced by dbxDD\backup(), dbxDD\build_schema_mapping(), dbxDD\build_sync_plan_dd_to_db(), dbxDD\create_db_tab(), dbxDD\create_db_tab_from_fields(), dbxDD\create_dd(), dbxDD\drop_db_tab(), dbxDD\empty_db_table(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), dbxDD\get_dd_tables(), dbxDD\restore(), and dbxDD\sync_db_to_dd().

◆ insert()

dbxDB::insert ( $dd,
$field_values,
$verify_access = 1,
$verify_fields = 1,
$verify_values = 1,
$trace = 1 )

Fügt einen neuen Datensatz in die Datenbank ein.

Ablauf

  1. Optional: Setzt System-/Audit-Felder
  2. Ergänzt Standardwerte
  3. Prüft Zugriff
  4. Validiert Felder und Werte
  5. Führt INSERT aus
  6. Optional: Schreibt Trace-Eintrag

Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.

Parameters
string$ddDatenbank-Definition
array$field_valuesZu speichernde Werte
int$verify_accessZugriff prüfen
int$verify_fieldsFelder prüfen
int$verify_valuesWerte prüfen
int$traceTrace aktivieren

Beispiel:

$rid = $db->insert('dbxUser', [
'name' => 'Admin',
'email' => 'admin@example.test'
]);
Returns
int >0 = Insert-ID, 0 = Validierungsfehler, -1 = Zugriffsfehler, -2 = DB-Fehler

Definition at line 2310 of file dbxDB.class.php.

References $fields, $server, check_access(), check_fields(), check_values(), clear_db_error(), connect_db_server(), count(), empty(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), get_error_status(), get_new_record(), and insert().

Referenced by delete(), insert(), save(), and update().

◆ insert_query()

dbxDB::insert_query ( $server,
$sql )

Führt eine INSERT-Abfrage aus und gibt die zuletzt eingefügte ID zurück.

Parameters
string$serverName des Datenbankservers
string$sqlSQL-Insert-Statement
Returns
int Insert-ID oder -2 im Fehlerfall

Definition at line 1819 of file dbxDB.class.php.

References $server, and query().

◆ isSQLiteDatabaseLocked()

dbxDB::isSQLiteDatabaseLocked ( $databasePath)

Prüft, ob eine SQLite-Datenbank aktuell gelockt ist.

Zweck

SQLite sperrt bei Schreibzugriffen die Datenbank bzw. Teile davon. Diese Funktion versucht defensiv, eine Transaktion zu starten. Scheitert das, wird die DB als gelockt betrachtet.

Verhalten

  • Öffnet temporäre Verbindung
  • setzt PRAGMA locking_mode=NORMAL
  • versucht beginTransaction()
  • Rollback nur wenn tatsächlich eine Transaktion aktiv ist
Parameters
string$databasePathVollständiger Pfad zur SQLite-Datei
Returns
int 1 = Datenbank ist gelockt, 0 = frei

Definition at line 315 of file dbxDB.class.php.

References $pdo.

◆ load_dd()

dbxDB::load_dd ( string $dd)

Lädt eine Datenbeschreibung (DD) aus Datei und speichert sie im Session-Cache.

Zweck

Zentraler DD-Resolver für alle Folgeoperationen wie:

Suchlogik

  • name → aktives Modul, danach Fallback dbx
  • modul|name → explizit dieses Modul
  • modul|... → Platzhalter für aktives Modul

Wichtige Stabilitätsregel

Ein expliziter Modulaufruf modulX|dd darf nicht durch einen bereits vorhandenen dbx-Cacheeintrag derselben DD übersteuert werden. Der dbx-Cache-Fallback wird daher nur bei nicht explizitem Modulaufruf verwendet.

Rückgabe

  • dd_status = 1 → DD erfolgreich geladen
  • dd_status = 0 → Datei nicht gefunden
  • dd_status = -1 → DD-Datei ungültig
Parameters
string$ddName der Datenbeschreibung, optional mit Modulpräfix
Returns
array{ dd_status:int, dd_modul:string, dd_name:string }

Reimplemented in dbxDD.

Definition at line 1104 of file dbxDB.class.php.

Referenced by empty(), get_csv_seperator(), get_dd_autosync(), get_dd_fields(), get_dd_file(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), and optimize_tab().

◆ map_dd_type_to_grid_type()

dbxDB::map_dd_type_to_grid_type ( string $ddType)

Mappt DD-Feldtypen auf Grid-Feldtypen.

Parameters
string$ddTypeDD-Typ
Returns
string Grid-Typ

Definition at line 3672 of file dbxDB.class.php.

◆ normalize_where()

dbxDB::normalize_where ( string $dd,
$where = '',
int $owner = 0 )

Normalisiert und erweitert eine WHERE-Bedingung für SQL-Abfragen.

Verhalten

  • 'new' oder '0' → leer
  • Integer → <primary_key> = value
  • optionaler Owner-Filter wird sicher mit Klammern ergänzt

Wichtige Stabilitätsregel

Für numerische WHERE-Werte wird, wenn möglich, der Primärschlüssel der übergebenen DD verwendet. Dadurch bleiben Aufrufe wie select('kunden', 15) oder update('kunde', [...], 15) stabil, auch wenn der Primärschlüssel nicht id heißt.

Rückwärtskompatibilität

Die DD ist optional. Ohne DD bleibt der Fallback wie bisher $this->_fld_id bzw. id.

Parameters
mixed$whereWHERE-Bedingung
int$owner1 = Owner-Filter aktiv
string | null$ddOptionaler DD-Name für Primärschlüssel-Auflösung
Returns
string Sichere WHERE-Bedingung Normalisiert WHERE-Eingaben zentral.

Bestehende String-WHEREs bleiben kompatibel. Neue Array-WHEREs werden anhand der DD-Felder gebaut und User-Suchwerte zentral validiert/escaped.

Parameters
string$ddDatenstrukturdefinition
mixed$whereString oder strukturierte WHERE-Definition
int$ownerOwner-Filter aktiv
Returns
string SQL-WHERE

Definition at line 4120 of file dbxDB.class.php.

References check_where(), and if.

Referenced by count(), delete(), select(), and update().

◆ optimize_tab()

dbxDB::optimize_tab ( $dd)

Optimiert eine Tabelle anhand ihrer DD nach Wartungsaktionen.

MySQL nutzt OPTIMIZE TABLE. SQLite nutzt VACUUM fuer die ganze Datenbankdatei, weil SQLite keine einzelne Tabellen-Vacuum kennt.

Parameters
string$ddDatenbeschreibung
Returns
int 1 bei Erfolg oder wenn keine Optimierung noetig/definiert ist, 0 bei Fehler

Definition at line 3124 of file dbxDB.class.php.

References $server, $table, exec(), get_db_type(), get_dd_server(), get_dd_table(), and load_dd().

Referenced by delete_tab().

◆ query()

dbxDB::query ( string $server,
string $sql )

Führt eine SQL-Abfrage auf dem angegebenen Server aus.

Stellt sicher, dass eine Verbindung besteht, bereitet die SQL-Abfrage vor und führt sie aus. Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.

Parameters
string$serverDatenbankserver
string$sqlSQL-Abfrage
Returns
PDOStatement|int PDO-Statement bei Erfolg, 0 bei Fehler

Definition at line 1317 of file dbxDB.class.php.

References $server, and if.

Referenced by count(), delete_query(), insert_query(), select_query(), and update_query().

◆ rawQuery()

dbxDB::rawQuery ( string $server,
string $query )

Führt eine rohe SQL-Abfrage auf dem angegebenen Server aus.

Unterstützt verschiedene SQL-Abfragetypen (SELECT, INSERT, UPDATE, DELETE, DDL usw.) und delegiert intern an die passende Methode.

Wichtige Stabilitätsregel

Der interne Transaktionsstatus ($_tx) wird hier nicht verändert. Transaktionen werden ausschließlich über begin(), commit() und rollback() gesteuert.

Parameters
string$serverDatenbankserver
string$querySQL-Abfrage
Returns
mixed Ergebnis der Abfrage oder Fehlercode

Definition at line 1901 of file dbxDB.class.php.

References $server, and if.

Referenced by dbxDD\backup(), empty(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), and get_db_tables().

◆ rollback()

dbxDB::rollback ( string $dd)

Führt ein Rollback für die Datenbank der angegebenen DD aus.

Parameters
string$ddName der Datenbeschreibung
Returns
int 1 bei Erfolg, 0 bei Fehler

Definition at line 1494 of file dbxDB.class.php.

References $server, and get_dd_server().

◆ save()

dbxDB::save ( $dd,
$field_values,
$where,
$verify_access = 1,
$verify_fields = 1,
$verify_values = 1,
$trace = 1 )

Speichert einen Datensatz mit UPSERT-ähnlichem Verhalten.

Ablauf

  • wenn WHERE vorhanden: zuerst UPDATE
  • UPDATE = 1 → Erfolg
  • UPDATE = -1/-2 → direkt zurück
  • UPDATE = 0 → prüfen, ob Datensatz bereits existiert
  • INSERT nur dann, wenn anhand der WHERE-Bedingung kein Datensatz existiert

Zweck

Verhindert das frühere Fehlverhalten:

  • UPDATE = 0 bedeutete früher automatisch INSERT
  • das konnte bei unveränderten Datensätzen zu Doppel-Insert führen
Parameters
string$ddDatenbankdefinition
array$field_valuesZu speichernde Werte
string$whereWHERE-Bedingung
int$verify_accessZugriff prüfen
int$verify_fieldsFelder prüfen
int$verify_valuesWerte prüfen
int$traceTrace aktivieren

Beispiel:

$ok = $db->save('dbxConfig', ['value' => 'blue'], "name='default_color'");
Returns
int Ergebnis von UPDATE oder INSERT

Definition at line 2732 of file dbxDB.class.php.

References check_access(), check_where(), clear_db_error(), count(), get_error_status(), insert(), and update().

◆ select()

dbxDB::select ( string $dd = '',
$where = '',
$columns = '*',
$orderby = '',
$asc_desc = 'ASC',
$groupby = '',
$max = 0,
$offset = 0,
$verify_access = 1 )

Führt eine SELECT-Abfrage auf der angegebenen DD aus.

Ablauf

  • DD laden
  • Tabelle/Server/Typ ermitteln
  • Zugriff prüfen
  • WHERE normalisieren
  • Feldliste gegen DD validieren
  • SQL generieren
  • Ergebnis lesen
Parameters
string$ddDatenbank-Definition
string$whereWHERE-Bedingung
string | array$columnsSpaltenliste oder *
string$orderbyORDER BY-Feld/Clause
string$asc_descSortierreihenfolge
string$groupbyGROUP BY-Clause
int$maxMaximale Anzahl Datensätze
int$offsetOffset
int$verify_accessZugriff prüfen

Beispiel:

$rows = $db->select('dbxUser', "active=1", ['id', 'name'], 'name');
Returns
array|int Ergebnisdatensaetze oder -1 bei fehlendem Zugriff

Definition at line 1977 of file dbxDB.class.php.

References $field, $fields, $server, check_access(), clear_db_error(), get_db_type(), get_dd_server(), get_dd_table(), normalize_where(), and select_query().

Referenced by delete(), select1(), and update().

◆ select1()

dbxDB::select1 ( string $dd,
$where = '',
$columns = '*',
$verify_access = 1 )

Führt eine SELECT-Abfrage aus und gibt genau einen Datensatz zurück.

Gibt bei leerem oder ungültigem Ergebnis einen leeren Standarddatensatz der DD zurück.

Parameters
string$ddDatenbank-Definition
string$whereWHERE-Bedingung
string | array$columnsSpaltenliste
int$verify_accessZugriff prüfen
Returns
array Einzelner Datensatz oder Leerstruktur

Definition at line 2068 of file dbxDB.class.php.

References empty_record(), and select().

◆ select_query()

dbxDB::select_query ( string $server,
string $sql,
string $dd = '' )

Fuehrt eine rohe SELECT-Abfrage auf einem konfigurierten DB-Server aus.

Diese Methode ist die Infrastrukturvariante fuer Faelle, in denen ein normaler DD-basierter select() nicht passt. Der optionale DD-Name wird nur fuer Performance-Messung und Kontextprotokollierung verwendet; die SQL-Anweisung selbst muss bereits vollstaendig und gueltig sein.

Beispiel:

$db = dbx()->get_system_obj('dbxDB');
$rows = $db->select_query(
'dbXsystem',
'SELECT id, uname FROM user ORDER BY uname',
'dbxUser|user'
);

Ergebnis:

[
['id' => 1, 'uname' => 'admin'],
]
Parameters
string$serverLogischer DB-Server aus der dbxDB-Konfiguration.
string$sqlVollstaendige SELECT-Anweisung.
string$ddOptionaler DD-Kontext fuer Timer, Logging und Diagnose.
Returns
array|int Liste assoziativer Zeilen oder 0 bei Fehler.

Definition at line 1723 of file dbxDB.class.php.

References $server, get_error_status(), and query().

Referenced by select().

◆ select_tree()

dbxDB::select_tree ( string $folder_dd,
string $item_dd = '',
array $opt = [] )

Liefert generische Tree-Daten aus einer Parent-Tabelle und optionalen Items.

Die Methode ist bewusst klein konfigurierbar, damit Module nur DD-Namen und abweichende Feldnamen uebergeben muessen. Typischer CMS-Fall: Ordner aus dbxContentFolder, Seiten aus dbxContent.

Parameters
string$folder_ddDD fuer die Baum-/Ordner-Tabelle
string$item_ddOptional DD fuer Kind-Items/Seiten
array$optFeld- und Filteroptionen
Returns
array{nodes:array,flat:array,folders:array,items:array}

Definition at line 2095 of file dbxDB.class.php.

References empty(), and get_dd_table_def().

◆ sqlite_sequence_exists()

dbxDB::sqlite_sequence_exists ( string $server)
protected

Prueft ohne Schema-Warnung, ob SQLite seine AUTOINCREMENT-Tabelle hat.

sqlite_sequence existiert erst, nachdem in der Datenbank mindestens eine Tabelle mit AUTOINCREMENT angelegt wurde. Ihr Fehlen ist deshalb kein Datenbankfehler.

Definition at line 2998 of file dbxDB.class.php.

References $server, get_db_type(), and if.

Referenced by empty(), and dbxDD\empty_db_table().

◆ update()

dbxDB::update ( $dd,
$field_values,
$where,
$verify_access = 1,
$verify_fields = 1,
$verify_values = 1,
$trace = 1 )

Führt ein UPDATE-Statement auf einer Tabelle aus.

Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.

Ablauf

  • Access prüfen
  • WHERE normalisieren
  • optional Before-Rows für Trace laden
  • Felder/Werte prüfen
  • UPDATE ausführen
  • Delta-basiert Trace schreiben
Parameters
string$ddDatenbankdefinition oder Tabellenname
array$field_valuesZu aktualisierende Werte
string$whereWHERE-Bedingung
int$verify_accessZugriff prüfen
int$verify_fieldsFelder prüfen
int$verify_valuesWerte prüfen
int$traceTrace aktivieren

Beispiel:

$ok = $db->update('dbxUser', ['active' => 1], 15);
Returns
int 1 = geaendert, 0 = nichts geaendert, -1 = Zugriff, -2 = DB-Fehler

Definition at line 2505 of file dbxDB.class.php.

References $count, $field, $server, check_access(), check_fields(), check_values(), clear_db_error(), connect_db_server(), empty(), get_convert_array(), get_dd_primary(), get_dd_server(), get_dd_table(), get_dd_table_def(), get_error_status(), insert(), normalize_where(), and select().

Referenced by save().

◆ update_query()

dbxDB::update_query ( $server,
$sql )

Führt eine UPDATE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.

Parameters
string$serverDatenbankserver
string$sqlSQL-Update-Statement
Returns
int Anzahl der betroffenen Zeilen oder -2

Definition at line 2679 of file dbxDB.class.php.

References $server, and query().

Member Data Documentation

◆ $_connect_timeout

int dbxDB::$_connect_timeout = 3

Maximale Wartezeit fuer einen DB-Verbindungsaufbau in Sekunden.

Definition at line 107 of file dbxDB.class.php.

◆ $_connected

dbxDB::$_connected = 0

Definition at line 68 of file dbxDB.class.php.

◆ $_dbMessage

dbxDB::$_dbMessage = ''

Definition at line 80 of file dbxDB.class.php.

◆ $_dbtype

dbxDB::$_dbtype = ''

Definition at line 70 of file dbxDB.class.php.

◆ $_delete_count

dbxDB::$_delete_count = 0

Definition at line 76 of file dbxDB.class.php.

◆ $_error

dbxDB::$_error = ''

Definition at line 95 of file dbxDB.class.php.

◆ $_error_status

dbxDB::$_error_status = ''

db|sql|access

Definition at line 102 of file dbxDB.class.php.

◆ $_error_text

dbxDB::$_error_text = ''

Definition at line 104 of file dbxDB.class.php.

◆ $_fld_id

dbxDB::$_fld_id

Definition at line 93 of file dbxDB.class.php.

◆ $_insert_count

dbxDB::$_insert_count = 0

Definition at line 78 of file dbxDB.class.php.

◆ $_insert_id

dbxDB::$_insert_id = 0

Definition at line 72 of file dbxDB.class.php.

◆ $_query

dbxDB::$_query = ''

Definition at line 96 of file dbxDB.class.php.

◆ $_report_error

dbxDB::$_report_error = 1

1 = DB-Fehler automatisch in dbxSysMsg schreiben, 0 = nicht

Definition at line 99 of file dbxDB.class.php.

◆ $_server

dbxDB::$_server = ''

Definition at line 69 of file dbxDB.class.php.

◆ $_update_count

dbxDB::$_update_count = 0

Definition at line 74 of file dbxDB.class.php.

◆ $_validation_error

dbxDB::$_validation_error = 0

Definition at line 83 of file dbxDB.class.php.

◆ $_validation_error_flds

dbxDB::$_validation_error_flds = array()

Definition at line 85 of file dbxDB.class.php.

◆ $_validation_warning

dbxDB::$_validation_warning = 0

Definition at line 84 of file dbxDB.class.php.

◆ $_validation_warning_flds

dbxDB::$_validation_warning_flds = array()

Definition at line 86 of file dbxDB.class.php.

◆ $_validatior_error

dbxDB::$_validatior_error = 0

Definition at line 90 of file dbxDB.class.php.

◆ $_validatior_mode

dbxDB::$_validatior_mode = 'clean'

Definition at line 91 of file dbxDB.class.php.

◆ $_validatior_rules

dbxDB::$_validatior_rules = 0

Definition at line 88 of file dbxDB.class.php.

◆ $_validatior_type

dbxDB::$_validatior_type = 1

Definition at line 89 of file dbxDB.class.php.

◆ $db

dbxDB::$db = array()

Definition at line 64 of file dbxDB.class.php.

◆ $oValidator

dbxDB::$oValidator = null

Definition at line 82 of file dbxDB.class.php.

◆ $pdo

dbxDB::$pdo = null

Definition at line 66 of file dbxDB.class.php.

Referenced by commit(), and isSQLiteDatabaseLocked().


The documentation for this class was generated from the following file: