33 lines
1.0 KiB
PHP
Executable File
33 lines
1.0 KiB
PHP
Executable File
<?php
|
|
// Shared database connection. Include this file and call getDB() to get a PDO handle.
|
|
|
|
if (basename($_SERVER['SCRIPT_FILENAME'] ?? '') === basename(__FILE__)) {
|
|
http_response_code(403);
|
|
exit;
|
|
}
|
|
|
|
function getDB(): PDO {
|
|
static $pdo = null;
|
|
if ($pdo !== null) return $pdo;
|
|
|
|
$credentialsFile = __DIR__ . '/../config/db_credentials.php';
|
|
if (!is_readable($credentialsFile)) {
|
|
throw new RuntimeException('Database credentials file is missing.');
|
|
}
|
|
$cfg = require $credentialsFile;
|
|
|
|
$dsn = sprintf(
|
|
'mysql:host=%s;port=%d;dbname=%s;charset=%s',
|
|
$cfg['host'], $cfg['port'], $cfg['database'], $cfg['charset']
|
|
);
|
|
|
|
$pdo = new PDO($dsn, $cfg['username'], $cfg['password'], [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
]);
|
|
// Store and compare all DATETIME values in UTC
|
|
$pdo->exec("SET time_zone = '+00:00'");
|
|
return $pdo;
|
|
}
|