try {
$dsn = "mysql:host={$config['DB_HOST']};port={$config['DB_PORT']};dbname={$config['DB_DATABASE']};charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
];
$this->connection = new PDO($dsn, $config['DB_USERNAME'], $config['DB_PASSWORD'], $options);
} catch (PDOException $e) {
error_log("Database Connection Error: " . $e->getMessage());
die("Database connection failed. Please check your configuration.");
}
}
/**
* Get singleton instance
*/
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Get PDO connection
*/
public function getConnection() {
return $this->connection;
}
/**
* Prepare and execute query
*/
public function query($sql, $params = []) {
try {
$stmt = $this->connection->prepare($sql);
$stmt->execute($params);
return $stmt;
} catch (PDOException $e) {
error_log("Query Error: " . $e->getMessage());
throw $e;
}
}
/**
* Fetch all results
*/
public function fetchAll($sql, $params = []) {
$stmt = $this->query($sql, $params);
return $stmt->fetchAll();
}
/**
* Fetch single result
*/
public function fetchOne($sql, $params = []) {
$stmt = $this->query($sql, $params);
return $stmt->fetch();
}
/**
* Insert record and return last insert ID
*/
public function insert($sql, $params = []) {
$this->query($sql, $params);
return $this->connection->lastInsertId();
}
/**
* Update record and return affected rows
*/
public function update($sql, $params = []) {
$stmt = $this->query($sql, $params);
return $stmt->rowCount();
}
/**
* Delete record and return affected rows
*/
public function delete($sql, $params = []) {
$stmt = $this->query($sql, $params);
return $stmt->rowCount();
}
/**
* Begin transaction
*/
public function beginTransaction() {
return $this->connection->beginTransaction();
}
/**
* Commit transaction
*/
public function commit() {
return $this->connection->commit();
}
/**
* Rollback transaction
*/
public function rollback() {
return $this->connection->rollBack();
}
/**
* Prevent cloning
*/
private function __clone() {}
/**
* Prevent unserialization
*/
public function __wakeup() {
throw new Exception("Cannot unserialize singleton");
}
}
Fatal error: Uncaught Error: Class "Database" not found in H:\Other computers\My MacBook Pro\htdocs\sada1\src\Models\Merchant.php:13
Stack trace:
#0 H:\Other computers\My MacBook Pro\htdocs\sada1\src\Controllers\AuthController.php(19): Merchant->__construct()
#1 H:\Other computers\My MacBook Pro\htdocs\sada1\src\Helpers\Router.php(133): Controllers\AuthController->__construct()
#2 H:\Other computers\My MacBook Pro\htdocs\sada1\src\Helpers\Router.php(86): Router::callControllerAction('AuthController@...', Array)
#3 H:\Other computers\My MacBook Pro\htdocs\sada1\public\routes.php(57): Router::dispatch()
#4 H:\Other computers\My MacBook Pro\htdocs\sada1\public\index.php(45): require_once('H:\\Other comput...')
#5 {main}
thrown in H:\Other computers\My MacBook Pro\htdocs\sada1\src\Models\Merchant.php on line 13