|
dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
|
Zentrale Datenbank- und DD-Systemklasse von DBX. More...
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. | |
Zentrale Datenbank- und DD-Systemklasse von DBX.
Diese Klasse ist die zentrale Infrastruktur für:
DD-Dateien liegen unter: dbx/modules/{modul}/dd/*.dd.php
Eine DD definiert typischerweise:
Definition at line 62 of file dbxDB.class.php.
| dbxDB::__construct | ( | ) |
Initialisiert das DBX-Datenbankobjekt mit Standardwerten und lädt den zentralen Validator.
Reimplemented in dbxDD.
Definition at line 121 of file dbxDB.class.php.
| dbxDB::__destruct | ( | ) |
Gibt interne Referenzen beim Zerstören des Objekts frei.
Definition at line 143 of file dbxDB.class.php.
| dbxDB::add_db_fld | ( | $server, | |
| $table, | |||
| $field ) |
Fügt ein neues Feld zu einer bestehenden Tabelle in der Datenbank hinzu.
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.
Diese Funktion ist bewusst minimal gehalten und ändert die bestehende DBX-Logik nicht grundsätzlich.
| string | $server | Der Name des Datenbankservers |
| string | $table | Der Name der Tabelle |
| array | $field | Felddefinition:
|
Definition at line 961 of file dbxDB.class.php.
References $field, $server, $table, connect_db_server(), empty(), and get_db_type().
| dbxDB::begin | ( | string | $dd | ) |
Startet eine Transaktion für die Datenbank der angegebenen DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1477 of file dbxDB.class.php.
References $server, and get_dd_server().
| 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.
| string | $dd | Datenbeschreibung |
| mixed | $search | User-Suchwert |
| array | $likeFields | Felder fuer LIKE |
| array | $equalFields | Felder fuer exakte Suche |
| string | $mode | starts_with|contains|ends_with|exact |
Definition at line 4306 of file dbxDB.class.php.
| dbxDB::can_connect_database_config | ( | array | $dbConfig, |
| bool | $withDatabase = false ) |
Definition at line 477 of file dbxDB.class.php.
| dbxDB::check_access | ( | string | $mode, |
| string | $dd ) |
Prüft die Zugriffsrechte für eine Operation auf einer DD.
| string | $mode | Operation: insert|update|delete|select |
| string | $dd | Datenbeschreibung |
Definition at line 3797 of file dbxDB.class.php.
References $table, and get_dd_table().
Referenced by count(), delete(), insert(), save(), select(), and update().
| 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.
| string | $dd | Datenstrukturdefinition |
| array | $field_values | Eingabewerte |
Definition at line 3989 of file dbxDB.class.php.
References $field, empty(), and get_dd_fields().
| 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:
| string | $dd | Datenstrukturdefinition |
| array | $field_values | Zu überprüfende Feldwerte |
| int | $verify_values | Gibt an, ob Werte überprüft werden sollen |
Definition at line 3878 of file dbxDB.class.php.
References $field, $fields, get_convert_array(), and get_dd_fields().
| 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().
| dbxDB::clear_db_error | ( | ) |
| dbxDB::commit | ( | $dd | ) |
Committet eine laufende Transaktion der Datenbank einer DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1606 of file dbxDB.class.php.
References $pdo, $server, connect_db_server(), empty(), get_db_type(), and get_dd_server().
| dbxDB::connect_db_server | ( | string | $server | ) |
Verbindet sich mit einem angegebenen Datenbankserver.
| string | $server | Name des Datenbankservers |
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().
| dbxDB::count | ( | $dd, | |
| $where = '', | |||
| $server = '' ) |
Zählt Datensätze einer DD oder Tabelle.
Der DB-Zugriff läuft über den zentralen Query-Pfad, damit Fehlerbehandlung und Retry-Verhalten konsistent bleiben.
| string | $dd | DD-Name oder Tabellenname |
| string | $where | WHERE-Bedingung |
| string | $server | Optional expliziter Server |
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().
| dbxDB::create_select | ( | string | $select, |
| array | $flds, | ||
| int | $and = 1 ) |
Erzeugt eine SQL-WHERE-Bedingung für eine Volltextsuche über mehrere Felder.
| string | $select | Suchbegriff(e), getrennt durch Leerzeichen |
| array | $flds | Array der zu durchsuchenden Spalten |
| int | $and | 1 = AND, 0 = OR |
Definition at line 1785 of file dbxDB.class.php.
| 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.
| dbxDB::dbConnect | ( | $server, | |
| $dbType, | |||
| $dbHost, | |||
| $dbName = '', | |||
| $dbUser = '', | |||
| $dbPass = '', | |||
| $dbPort = '' ) |
Stellt eine Verbindung zu einer Datenbank her und speichert sie in $this->db[$server].
sqlite, mysql, pgsql, sqlsrv, oci, firebird, cubrid, dblib, ibm, informix, odbc.
Bei unbekanntem Datenbanktyp wird sauber ein Fehler gesetzt und protokolliert, ohne unkontrolliert nach außen abzubrechen.
| string | $server | Name des Servers (Schlüssel im $this->db-Array) |
| string | $dbType | Typ der Datenbank |
| string | $dbHost | Hostname oder Datei für SQLite |
| string | $dbName | Name der Datenbank |
| string | $dbUser | Benutzername |
| string | $dbPass | Passwort |
| string | $dbPort | Port |
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().
| dbxDB::delete | ( | $dd, | |
| $where, | |||
| $verify_access = 1, | |||
| $trace = 1 ) |
Löscht Datensätze aus einer Tabelle anhand einer WHERE-Bedingung.
| string | $dd | Datenbeschreibung |
| mixed | $where | WHERE-Bedingung |
| int | $verify_access | Zugriff prüfen |
| int | $trace | Trace aktivieren |
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().
| dbxDB::delete_query | ( | $server, | |
| $sql ) |
Führt eine DELETE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
| string | $server | Datenbankserver |
| string | $sql | SQL-Delete-Statement |
Definition at line 1853 of file dbxDB.class.php.
References $count, $server, and query().
Referenced by delete().
| 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.
| string | $dd | Datenbeschreibung |
Definition at line 3104 of file dbxDB.class.php.
References empty(), and optimize_tab().
| dbxDB::empty | ( | $dd | ) |
Leert eine Tabelle anhand ihrer DD.
Je nach DB-Typ werden passende Statements verwendet.
| string | $dd | Datenbeschreibung |
Definition at line 3020 of file dbxDB.class.php.
References $server, exec_query(), get_db_type(), get_dd_server(), get_dd_table(), load_dd(), rawQuery(), and sqlite_sequence_exists().
Referenced by add_db_fld(), dbxDD\auto_schema_mapping(), dbxDD\backup(), dbxDD\build_schema_mapping(), dbxDD\build_sync_plan_dd_to_db(), check_fields(), commit(), count(), dbxDD\create_db_tab_from_fields(), delete_tab(), dbxDD\get_preferred_table_schema(), insert(), dbxDD\merge_dd_field_with_db_field(), dbxDD\restore(), select_tree(), dbxDD\sync_dd_to_db(), and update().
| dbxDB::empty_record | ( | string | $dd | ) |
Erstellt einen leeren Datensatz mit Standardwerten basierend auf der DD.
| string | $dd | Datenstrukturdefinition |
Definition at line 4023 of file dbxDB.class.php.
References get_dd_fields().
Referenced by get_new_record(), and select1().
| dbxDB::ensure_database_exists | ( | string | $server, |
| array | $dbConfig ) |
Definition at line 516 of file dbxDB.class.php.
References $server.
| dbxDB::escape | ( | $string, | |
| $server ) |
Escaped einen String für die sichere Verwendung in einer SQL-Abfrage.
Diese Methode dient nur zum Escapen einzelner Strings. Für INSERT/UPDATE wird weiterhin mit Prepared Statements gearbeitet.
| string | $string | Zu escapender String |
| string | int | $server | Serverindex |
Definition at line 4262 of file dbxDB.class.php.
References $server, and connect_db_server().
Referenced by escape_like(), and dbxDD\sql_quote().
| 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.
| string | $value | User-Suchwert |
| string | $server | Datenbankserver |
Definition at line 4282 of file dbxDB.class.php.
| dbxDB::exec | ( | string | $server, |
| string | $sql ) |
Führt eine SQL-Anweisung aus, die keine Daten zurückgibt (z.
B. UPDATE, DELETE, DDL).
| string | $server | Datenbankserver |
| string | $sql | SQL-Abfrage |
Definition at line 1665 of file dbxDB.class.php.
References $server, connect_db_server(), and if.
Referenced by exec_query(), and optimize_tab().
| dbxDB::exec_query | ( | $server, | |
| $sql ) |
Führt eine generische SQL-Exec-Anweisung aus.
| string | $server | Datenbankserver |
| string | $sql | SQL-Anweisung |
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().
| dbxDB::get_convert_array | ( | $field, | |
| $array, | |||
| $convert = 'auto' ) |
Konvertiert Array-Werte automatisch in String-/Serialisierungsformate.
| string | $field | Feldname |
| mixed | $array | Wert oder Array |
| string | $convert | Modus: auto|serial|list |
Definition at line 3729 of file dbxDB.class.php.
References $field.
Referenced by check_values(), and update().
| 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.
| string | $dd | Name der Datenbeschreibung |
Definition at line 870 of file dbxDB.class.php.
References load_dd().
| dbxDB::get_db_tables | ( | $server, | |
| $not = 'sqlite_sequence' ) |
Liefert alle Tabellen eines Servers mit Datensatzanzahl zurück.
Die Rückgabestruktur bleibt unverändert:
Falls das Zählen fehlschlägt, wird count auf -1 gesetzt.
| string | $server | Datenbankserver |
| string | $not | Tabellenname, der ausgeschlossen werden soll |
Definition at line 3388 of file dbxDB.class.php.
References $count, $server, connect_db_server(), count(), get_db_type(), and rawQuery().
| 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:
| string | $server | Name des DB-Servers |
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().
| dbxDB::get_dd_autosync | ( | $dd, | |
| $rec = 0 ) |
Gibt das Autosync-Flag einer DD zurück.
| string | $dd | Name der Datenbeschreibung |
| int | $rec | 0 = Wert, 1 = kompletter Datensatzbereich |
Definition at line 1046 of file dbxDB.class.php.
References load_dd().
Referenced by dbxDD\get_dd_tables().
| dbxDB::get_dd_cols | ( | string | $dd | ) |
Gibt alle DD-Spaltennamen als CSV-String zurück.
| string | $dd | Name der Datenbeschreibung |
Definition at line 3571 of file dbxDB.class.php.
References $fields, and get_dd_fields().
| dbxDB::get_dd_exist | ( | $dd | ) |
Prüft, ob eine DD-Datei im Standardmodul dbx existiert.
| string | $dd | Name der DD |
Reimplemented in dbxDD.
Definition at line 3365 of file dbxDB.class.php.
References dbx_get_base_dir(), and dbx_os_path_file().
| 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.
Die Funktion arbeitet defensiv:
| string | $dd | Name der Datenbeschreibung |
| int | $label | 0 = komplette Felddefinitionen, 1 = Name => Label |
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().
| dbxDB::get_dd_file | ( | string | $dd | ) |
Liefert den Dateipfad einer geladenen DD fuer Editor-Marker.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1282 of file dbxDB.class.php.
References load_dd().
| dbxDB::get_dd_grid_cols | ( | string | $dd | ) |
Erzeugt die neue Grid-Column-Syntax aus einer DD.
Die Funktion arbeitet defensiv bei unvollständigen DD-Felddefinitionen.
| string | $dd | Name der Datenbeschreibung |
Definition at line 3606 of file dbxDB.class.php.
References $fields, and get_dd_fields().
| 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.
| string | $dd | Name der Datenbeschreibung |
Definition at line 895 of file dbxDB.class.php.
References load_dd().
Referenced by check_where(), delete(), insert(), and update().
| dbxDB::get_dd_server | ( | string | $dd | ) |
Ermittelt den Server einer Datenbeschreibung (DD).
Falls in der DD kein Server gesetzt ist, wird default verwendet.
| string | $dd | Name der Datenbeschreibung |
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().
| dbxDB::get_dd_sort_desc | ( | $dd | ) |
Platzhalter für Sortierrichtung einer DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 931 of file dbxDB.class.php.
| dbxDB::get_dd_sort_flds | ( | $dd | ) |
Platzhalter für Sortierfelder einer DD.
| string | $dd | Name der Datenbeschreibung |
Definition at line 919 of file dbxDB.class.php.
| dbxDB::get_dd_table | ( | $dd, | |
| $rec = 0 ) |
Gibt den Tabellennamen oder die komplette Table-Definition einer DD zurück.
Bei fehlender oder ungültiger DD wird 0 zurückgegeben.
| string | $dd | Name der Datenbeschreibung |
| int | $rec | 0 = nur Tabellenname, 1 = komplette Table-Definition |
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().
| 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.
| string | $dd | Name der Datenbeschreibung |
Definition at line 3462 of file dbxDB.class.php.
References $table, and load_dd().
Referenced by check_where(), delete(), insert(), select_tree(), and update().
| dbxDB::get_error_status | ( | ) |
Liefert die Fehlerart des letzten DB-Aufrufs.
Definition at line 163 of file dbxDB.class.php.
Referenced by count(), insert(), save(), select_query(), and update().
| dbxDB::get_error_text | ( | ) |
Liefert den Fehlertext des letzten DB-Aufrufs.
Definition at line 172 of file dbxDB.class.php.
| dbxDB::get_insert_id | ( | ) |
Liefert die letzte Insert-ID nach erfolgreichem insert().
Definition at line 181 of file dbxDB.class.php.
| 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.
| string | $dd | Datenbank-Objekt |
| array | $field_values | Initialwerte |
Definition at line 2262 of file dbxDB.class.php.
References $field, and empty_record().
Referenced by insert().
| dbxDB::get_rpt_fields | ( | $dd, | |
| $flds, | |||
| $label = 1 ) |
Ermittelt die Report-Felder einer DD für eine übergebene Feldliste.
| string | $dd | Name der Datenbeschreibung |
| string | $flds | Feldliste oder * |
| int | $label | 1 = Label verwenden |
Definition at line 3542 of file dbxDB.class.php.
References $field, $fields, and get_dd_fields().
| dbxDB::get_table_exist | ( | $dd, | |
| $dbtab = '' ) |
Prueft, ob eine Tabelle existiert.
| string | $dd | DD-Name oder Servername |
| string | $dbtab | Optional expliziter Tabellenname |
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().
| 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.
Bei retry-fähigen Lock-/Deadlock-Fehlern wird außerhalb aktiver Transaktionen mehrfach erneut versucht.
| string | $dd | Datenbank-Definition |
| array | $field_values | Zu speichernde Werte |
| int | $verify_access | Zugriff prüfen |
| int | $verify_fields | Felder prüfen |
| int | $verify_values | Werte prüfen |
| int | $trace | Trace aktivieren |
Beispiel:
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().
| dbxDB::insert_query | ( | $server, | |
| $sql ) |
Führt eine INSERT-Abfrage aus und gibt die zuletzt eingefügte ID zurück.
| string | $server | Name des Datenbankservers |
| string | $sql | SQL-Insert-Statement |
Definition at line 1819 of file dbxDB.class.php.
| dbxDB::isSQLiteDatabaseLocked | ( | $databasePath | ) |
Prüft, ob eine SQLite-Datenbank aktuell gelockt ist.
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.
| string | $databasePath | Vollständiger Pfad zur SQLite-Datei |
Definition at line 315 of file dbxDB.class.php.
References $pdo.
| dbxDB::load_dd | ( | string | $dd | ) |
Lädt eine Datenbeschreibung (DD) aus Datei und speichert sie im Session-Cache.
Zentraler DD-Resolver für alle Folgeoperationen wie:
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.
| string | $dd | Name der Datenbeschreibung, optional mit Modulpräfix |
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().
| dbxDB::map_dd_type_to_grid_type | ( | string | $ddType | ) |
Mappt DD-Feldtypen auf Grid-Feldtypen.
| string | $ddType | DD-Typ |
Definition at line 3672 of file dbxDB.class.php.
| dbxDB::normalize_where | ( | string | $dd, |
| $where = '', | |||
| int | $owner = 0 ) |
Normalisiert und erweitert eine WHERE-Bedingung für SQL-Abfragen.
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.
Die DD ist optional. Ohne DD bleibt der Fallback wie bisher $this->_fld_id bzw. id.
| mixed | $where | WHERE-Bedingung |
| int | $owner | 1 = Owner-Filter aktiv |
| string | null | $dd | Optionaler DD-Name für Primärschlüssel-Auflösung |
Bestehende String-WHEREs bleiben kompatibel. Neue Array-WHEREs werden anhand der DD-Felder gebaut und User-Suchwerte zentral validiert/escaped.
| string | $dd | Datenstrukturdefinition |
| mixed | $where | String oder strukturierte WHERE-Definition |
| int | $owner | Owner-Filter aktiv |
Definition at line 4120 of file dbxDB.class.php.
References check_where(), and if.
| 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.
| string | $dd | Datenbeschreibung |
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().
| 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.
| string | $server | Datenbankserver |
| string | $sql | SQL-Abfrage |
Definition at line 1317 of file dbxDB.class.php.
Referenced by count(), delete_query(), insert_query(), select_query(), and update_query().
| 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.
Der interne Transaktionsstatus ($_tx) wird hier nicht verändert. Transaktionen werden ausschließlich über begin(), commit() und rollback() gesteuert.
| string | $server | Datenbankserver |
| string | $query | SQL-Abfrage |
Definition at line 1901 of file dbxDB.class.php.
Referenced by dbxDD\backup(), empty(), dbxDD\get_db_fields(), dbxDD\get_db_indexes(), and get_db_tables().
| dbxDB::rollback | ( | string | $dd | ) |
Führt ein Rollback für die Datenbank der angegebenen DD aus.
| string | $dd | Name der Datenbeschreibung |
Definition at line 1494 of file dbxDB.class.php.
References $server, and get_dd_server().
| dbxDB::save | ( | $dd, | |
| $field_values, | |||
| $where, | |||
| $verify_access = 1, | |||
| $verify_fields = 1, | |||
| $verify_values = 1, | |||
| $trace = 1 ) |
Speichert einen Datensatz mit UPSERT-ähnlichem Verhalten.
Verhindert das frühere Fehlverhalten:
| string | $dd | Datenbankdefinition |
| array | $field_values | Zu speichernde Werte |
| string | $where | WHERE-Bedingung |
| int | $verify_access | Zugriff prüfen |
| int | $verify_fields | Felder prüfen |
| int | $verify_values | Werte prüfen |
| int | $trace | Trace aktivieren |
Beispiel:
Definition at line 2732 of file dbxDB.class.php.
References check_access(), check_where(), clear_db_error(), count(), get_error_status(), insert(), and update().
| 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.
| string | $dd | Datenbank-Definition |
| string | $where | WHERE-Bedingung |
| string | array | $columns | Spaltenliste oder * |
| string | $orderby | ORDER BY-Feld/Clause |
| string | $asc_desc | Sortierreihenfolge |
| string | $groupby | GROUP BY-Clause |
| int | $max | Maximale Anzahl Datensätze |
| int | $offset | Offset |
| int | $verify_access | Zugriff prüfen |
Beispiel:
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().
| 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.
| string | $dd | Datenbank-Definition |
| string | $where | WHERE-Bedingung |
| string | array | $columns | Spaltenliste |
| int | $verify_access | Zugriff prüfen |
Definition at line 2068 of file dbxDB.class.php.
References empty_record(), and select().
| 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:
Ergebnis:
| string | $server | Logischer DB-Server aus der dbxDB-Konfiguration. |
| string | $sql | Vollstaendige SELECT-Anweisung. |
| string | $dd | Optionaler DD-Kontext fuer Timer, Logging und Diagnose. |
Definition at line 1723 of file dbxDB.class.php.
References $server, get_error_status(), and query().
Referenced by select().
| 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.
| string | $folder_dd | DD fuer die Baum-/Ordner-Tabelle |
| string | $item_dd | Optional DD fuer Kind-Items/Seiten |
| array | $opt | Feld- und Filteroptionen |
Definition at line 2095 of file dbxDB.class.php.
References empty(), and get_dd_table_def().
|
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().
| 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.
| string | $dd | Datenbankdefinition oder Tabellenname |
| array | $field_values | Zu aktualisierende Werte |
| string | $where | WHERE-Bedingung |
| int | $verify_access | Zugriff prüfen |
| int | $verify_fields | Felder prüfen |
| int | $verify_values | Werte prüfen |
| int | $trace | Trace aktivieren |
Beispiel:
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().
| dbxDB::update_query | ( | $server, | |
| $sql ) |
Führt eine UPDATE-Abfrage aus und gibt die Anzahl der betroffenen Zeilen zurück.
| string | $server | Datenbankserver |
| string | $sql | SQL-Update-Statement |
Definition at line 2679 of file dbxDB.class.php.
| int dbxDB::$_connect_timeout = 3 |
Maximale Wartezeit fuer einen DB-Verbindungsaufbau in Sekunden.
Definition at line 107 of file dbxDB.class.php.
| dbxDB::$_connected = 0 |
Definition at line 68 of file dbxDB.class.php.
| dbxDB::$_dbMessage = '' |
Definition at line 80 of file dbxDB.class.php.
| dbxDB::$_dbtype = '' |
Definition at line 70 of file dbxDB.class.php.
| dbxDB::$_delete_count = 0 |
Definition at line 76 of file dbxDB.class.php.
| dbxDB::$_error = '' |
Definition at line 95 of file dbxDB.class.php.
| dbxDB::$_error_status = '' |
db|sql|access
Definition at line 102 of file dbxDB.class.php.
| dbxDB::$_error_text = '' |
Definition at line 104 of file dbxDB.class.php.
| dbxDB::$_fld_id |
Definition at line 93 of file dbxDB.class.php.
| dbxDB::$_insert_count = 0 |
Definition at line 78 of file dbxDB.class.php.
| dbxDB::$_insert_id = 0 |
Definition at line 72 of file dbxDB.class.php.
| dbxDB::$_query = '' |
Definition at line 96 of file dbxDB.class.php.
| dbxDB::$_report_error = 1 |
1 = DB-Fehler automatisch in dbxSysMsg schreiben, 0 = nicht
Definition at line 99 of file dbxDB.class.php.
| dbxDB::$_server = '' |
Definition at line 69 of file dbxDB.class.php.
| dbxDB::$_update_count = 0 |
Definition at line 74 of file dbxDB.class.php.
| dbxDB::$_validation_error = 0 |
Definition at line 83 of file dbxDB.class.php.
| dbxDB::$_validation_error_flds = array() |
Definition at line 85 of file dbxDB.class.php.
| dbxDB::$_validation_warning = 0 |
Definition at line 84 of file dbxDB.class.php.
| dbxDB::$_validation_warning_flds = array() |
Definition at line 86 of file dbxDB.class.php.
| dbxDB::$_validatior_error = 0 |
Definition at line 90 of file dbxDB.class.php.
| dbxDB::$_validatior_mode = 'clean' |
Definition at line 91 of file dbxDB.class.php.
| dbxDB::$_validatior_rules = 0 |
Definition at line 88 of file dbxDB.class.php.
| dbxDB::$_validatior_type = 1 |
Definition at line 89 of file dbxDB.class.php.
| dbxDB::$db = array() |
Definition at line 64 of file dbxDB.class.php.
| dbxDB::$oValidator = null |
Definition at line 82 of file dbxDB.class.php.
| dbxDB::$pdo = null |
Definition at line 66 of file dbxDB.class.php.
Referenced by commit(), and isSQLiteDatabaseLocked().