| Server IP : 46.105.57.169 / Your IP : 216.73.216.67 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/quaadraa/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use PDO;
use PDOException;
class Database
{
private static ?PDO $instance = null;
public static function getInstance(): PDO
{
if (self::$instance === null) {
$config = require dirname(__DIR__, 2) . '/config.php';
$db = $config['database'];
$dsn = "mysql:host={$db['host']};port={$db['port']};dbname={$db['name']};charset=utf8mb4";
try {
self::$instance = new PDO($dsn, $db['user'], $db['pass'], [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => true, // ← CORRIGÉ : permet les params dupliqués + LIMIT
]);
} catch (PDOException $e) {
error_log('[QUAADRA DB] ' . $e->getMessage());
http_response_code(503);
die('Service temporairement indisponible. Veuillez réessayer plus tard.');
}
}
return self::$instance;
}
public static function query(string $sql, array $params = []): \PDOStatement
{
$stmt = self::getInstance()->prepare($sql);
$stmt->execute($params);
return $stmt;
}
public static function fetchOne(string $sql, array $params = []): array|false
{
return self::query($sql, $params)->fetch();
}
public static function fetchAll(string $sql, array $params = []): array
{
return self::query($sql, $params)->fetchAll();
}
public static function insert(string $sql, array $params = []): int
{
self::query($sql, $params);
return (int) self::getInstance()->lastInsertId();
}
public static function execute(string $sql, array $params = []): int
{
return self::query($sql, $params)->rowCount();
}
}