Zentrale DB-Verbindung und Helfer fuer Prepared Statements

- incs/db.php: db_verbinden() setzt utf8mb4, strikten sql_mode und schaltet
  die mysqli-Exceptions von PHP 8.1+ ab, damit die bestehenden
  "or error(mysqli_error())"-Pruefungen weiter greifen.
- db_abfrage/db_zeilen/db_zeile/db_wert mit ?-Platzhaltern
  (mysqli_execute_query, PHP 8.2).
- Alle neun kopierten mysqli_connect/select_db-Stellen nutzen jetzt
  db_verbinden().

Nur zusammen mit der auf utf8mb4 migrierten Datenbank einsetzbar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-17 09:42:52 +02:00
co-authored by Claude Opus 5
parent 0dceb35502
commit 210a6c47a8
12 changed files with 102 additions and 28 deletions
+2
View File
@@ -84,6 +84,8 @@ Eine Schemaänderung besteht also aus: neuer Eintrag **vorn** in `update/version
## Datenbankzugriff
**Umbau läuft (Branch `db-umbau`):** Verbindungen entstehen nur noch über `db_verbinden()` aus `incs/db.php`. Die Funktion setzt `utf8mb4`, den strikten `sql_mode` und schaltet die mysqli-Exceptions ab. Neue und umgebaute Abfragen nutzen `db_abfrage()`, `db_zeilen()`, `db_zeile()` und `db_wert()` mit `?`-Platzhaltern statt String-Verkettung. Ziel-Schema ist das der Instanz `kunden` in `utf8mb4`; die Altdaten sind teils doppelt kodiert und werden per Migration repariert. Dieser Stand darf nur zusammen mit der migrierten Datenbank live gehen.
Prozedurales `mysqli`. `$dbconn` wird zusätzlich in `$_SESSION["dbconn"]` abgelegt, damit `incs/mysql_ecape_wrapper.php` eine globale Funktion `mysql_escape_string()` als Shim über diese Verbindung bereitstellen kann — ein Überbleibsel der `mysql_*`-Ära, das in altem Code noch aufgerufen wird.
SQL wird durchgehend per String-Verkettung gebaut. Escaping ist Handarbeit über `mysqli_real_escape_string($dbconn, …)` und muss bei jeder Änderung mitgedacht werden.