| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /**
- * Database Connection Class
- * Handles PDO database connections and basic operations
- */
- class Database {
- private static $instance = null;
- private $pdo;
- private $host;
- private $name;
- private $user;
- private $pass;
- private function __construct() {
- $this->host = DB_HOST;
- $this->name = DB_NAME;
- $this->user = DB_USER;
- $this->pass = DB_PASS;
-
- $this->connect();
- }
- public static function getInstance() {
- if (self::$instance === null) {
- self::$instance = new self();
- }
- return self::$instance;
- }
- private function connect() {
- try {
- $dsn = "mysql:host={$this->host};dbname={$this->name};charset=utf8mb4";
- $options = [
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
- PDO::ATTR_EMULATE_PREPARES => false,
- ];
-
- $this->pdo = new PDO($dsn, $this->user, $this->pass, $options);
- } catch (PDOException $e) {
- throw new Exception("Database connection failed: " . $e->getMessage());
- }
- }
- public function getConnection() {
- return $this->pdo;
- }
- public function query($sql, $params = []) {
- try {
- $stmt = $this->pdo->prepare($sql);
- $stmt->execute($params);
- return $stmt;
- } catch (PDOException $e) {
- throw new Exception("Query failed: " . $e->getMessage());
- }
- }
- public function fetch($sql, $params = []) {
- $stmt = $this->query($sql, $params);
- return $stmt->fetch();
- }
- public function fetchAll($sql, $params = []) {
- $stmt = $this->query($sql, $params);
- return $stmt->fetchAll();
- }
- public function insert($table, $data) {
- $columns = implode(', ', array_keys($data));
- $placeholders = implode(', ', array_fill(0, count($data), '?'));
- $values = array_values($data);
-
- $sql = "INSERT INTO $table ($columns) VALUES ($placeholders)";
- $this->query($sql, $values);
-
- return $this->pdo->lastInsertId();
- }
- public function update($table, $data, $where, $whereParams = []) {
- $setParts = [];
- $values = [];
-
- foreach ($data as $column => $value) {
- $setParts[] = "$column = ?";
- $values[] = $value;
- }
-
- $setClause = implode(', ', $setParts);
- $sql = "UPDATE $table SET $setClause WHERE $where";
-
- $values = array_merge($values, $whereParams);
- $stmt = $this->query($sql, $values);
-
- return $stmt->rowCount();
- }
- public function delete($table, $where, $params = []) {
- $sql = "DELETE FROM $table WHERE $where";
- $stmt = $this->query($sql, $params);
-
- return $stmt->rowCount();
- }
- public function beginTransaction() {
- return $this->pdo->beginTransaction();
- }
- public function commit() {
- return $this->pdo->commit();
- }
- public function rollback() {
- return $this->pdo->rollBack();
- }
- public function lastInsertId() {
- return $this->pdo->lastInsertId();
- }
- }
|