Unifi-Voucher-Tool/includes/Database.php
2026-04-21 17:45:58 +02:00

72 lines
No EOL
2.2 KiB
PHP

<?php
class Database {
private static $instance = null;
private $pdo;
private function __construct() {
try {
$this->pdo = new PDO(
"mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4",
DB_USER,
DB_PASS,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
]
);
} catch (PDOException $e) {
die("Datenbankverbindung fehlgeschlagen: " . $e->getMessage());
}
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function getConnection() {
return $this->pdo;
}
// Helper-Methode für Queries
public function query($sql, $params = []) {
$stmt = $this->pdo->prepare($sql);
$stmt->execute($params);
return $stmt;
}
// Helper für einzelnen Datensatz
public function fetchOne($sql, $params = []) {
$stmt = $this->query($sql, $params);
return $stmt->fetch();
}
// Helper für mehrere Datensätze
public function fetchAll($sql, $params = []) {
$stmt = $this->query($sql, $params);
return $stmt->fetchAll();
}
// Helper für Insert/Update mit Rückgabe der ID
public function execute($sql, $params = []) {
$this->query($sql, $params);
return $this->pdo->lastInsertId();
}
// Settings-Helper
public function getSetting($key, $default = null) {
$result = $this->fetchOne("SELECT setting_value FROM settings WHERE setting_key = ?", [$key]);
return $result ? $result['setting_value'] : $default;
}
public function setSetting($key, $value) {
$this->query(
"INSERT INTO settings (setting_key, setting_value) VALUES (?, ?)
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)",
[$key, $value]
);
}
}