pdo = getDB(); } public static function get(): Database { if (self::$instance === null) { self::$instance = new Database(); } return self::$instance; } public function query(string $sql, array $params = []): PDOStatement { $stmt = $this->pdo->prepare($sql); $stmt->execute($params); return $stmt; } public function fetchOne(string $sql, array $params = []): ?array { $stmt = $this->query($sql, $params); $row = $stmt->fetch(); return $row ?: null; } public function fetchAll(string $sql, array $params = []): array { return $this->query($sql, $params)->fetchAll(); } public function execute(string $sql, array $params = []): int { $stmt = $this->query($sql, $params); return $stmt->rowCount(); } public function lastInsertId(): string { return $this->pdo->lastInsertId(); } // ── Transaktionen (fuer Bulk-Operationen, z.B. Chargen-Vergabe) ── public function begin(): void { $this->pdo->beginTransaction(); } public function commit(): void { $this->pdo->commit(); } public function rollBack(): void { if ($this->pdo->inTransaction()) $this->pdo->rollBack(); } public function inTransaction(): bool { return $this->pdo->inTransaction(); } }