Datenbank-API
Die SLAED CMS Datenbank-API bietet eine umfassende Schnittstelle für die Interaktion mit der Datenbankschicht und bietet sowohl traditionelle Abfragemethoden als auch moderne Prepared Statements für Sicherheit.
Inhaltsverzeichnis
Datenbankverbindung
SLAED CMS verwendet ein globales Datenbankverbindungsobjekt, das im gesamten System verfügbar ist:
global $db, $prefix;
// $db - Datenbankverbindungsobjekt
// $prefix - Tabellenpräfix (während der Installation konfiguriert)
Grundlegende Abfragen
Die traditionellen Abfragemethoden sind immer noch für einfache Operationen verfügbar:
global $db, $prefix;
// Grundlegende Abfrageausführung
$result = $db->sql_query("SELECT * FROM {$prefix}_table");
// Einzelne Zeile als Array abrufen
$row = $db->sql_fetchrow($result);
// Einzelne Zeile als assoziatives Array abrufen
$assoc_row = $db->sql_fetchassoc($result);
// Anzahl der Zeilen abrufen
$num_rows = $db->sql_numrows($result);
// Letzte Einfüge-ID abrufen
$insert_id = $db->sql_insertid();
// String maskieren (veraltet - verwenden Sie Prepared Statements)
$safe_string = $db->sql_escape_string($string);
Prepared Statements
Für Sicherheit und Leistung werden Prepared Statements für alle Datenbankoperationen empfohlen:
SELECT mit Prepared Statements
// SELECT mit Prepared Statement
$stmt = $db->prepare("SELECT id, title, content FROM {$prefix}_news WHERE category = ? AND active = ?");
$stmt->bind_param("ii", $category_id, $active);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row['title'];
}
INSERT mit Prepared Statements
// INSERT mit Prepared Statement
$stmt = $db->prepare("INSERT INTO {$prefix}_news (title, content, author_id, created) VALUES (?, ?, ?, NOW())");
$stmt->bind_param("ssi", $title, $content, $author_id);
$stmt->execute();
$new_id = $stmt->insert_id;
UPDATE mit Prepared Statements
// UPDATE mit Prepared Statement
$stmt = $db->prepare("UPDATE {$prefix}_news SET title = ?, content = ? WHERE id = ?");
$stmt->bind_param("ssi", $title, $content, $id);
$stmt->execute();
$affected_rows = $stmt->affected_rows;
DELETE mit Prepared Statements
// DELETE mit Prepared Statement
$stmt = $db->prepare("DELETE FROM {$prefix}_news WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
Transaktionen
SLAED CMS unterstützt Datenbanktransaktionen zur Gewährleistung der Datenkonsistenz:
// Transaktion beginnen
global $db;
$db->begin_transaction();
try {
// Mehrere Datenbankoperationen
$stmt1 = $db->prepare("INSERT INTO {$prefix}_table1 (data) VALUES (?)");
$stmt1->bind_param("s", $data1);
$stmt1->execute();
$stmt2 = $db->prepare("UPDATE {$prefix}_table2 SET status = ? WHERE id = ?");
$stmt2->bind_param("si", $status, $id);
$stmt2->execute();
// Transaktion committen
$db->commit();
echo "Transaktion erfolgreich abgeschlossen";
} catch (Exception $e) {
// Bei Fehler zurückrollen
$db->rollback();
echo "Transaktion fehlgeschlagen: " . $e->getMessage();
}
Hilfsfunktionen
SLAED CMS bietet mehrere Hilfsfunktionen für gängige Datenbankoperationen:
Eingabevalidierung
// Eingabevariablen sicher abrufen und filtern
$id = getVar('get', 'id', 'num'); // Numerischen Wert aus GET abrufen
$title = getVar('post', 'title', 'text'); // Gefilterten Text aus POST abrufen
$email = getVar('post', 'email', 'email'); // E-Mail mit Validierung abrufen
$website = getVar('post', 'website', 'url'); // URL mit Validierung abrufen
Fehlerbehandlung
// Auf Datenbankfehler prüfen
if ($db->errno) {
echo "Datenbankfehler: " . $db->error;
}
// Betroffene Zeilen abrufen
$affected = $stmt->affected_rows;
// Prüfen, ob Abfrage erfolgreich war
if ($result) {
// Ergebnisse verarbeiten
} else {
// Fehler behandeln
}