Files
2026-08-14 10:55:06 +08:00

44 lines
1.0 KiB
PHP

<?php
// 数据库连接(PDO)。被 install 之外的所有页面复用。
// 安全:禁止被直接通过浏览器请求。
if (!defined('IN_APP')) {
http_response_code(403);
exit('Forbidden');
}
require_once __DIR__ . '/../config.php';
/**
* 返回全局唯一的 PDO 实例(懒加载 + 单例)。
*/
function db()
{
static $pdo = null;
if ($pdo !== null) {
return $pdo;
}
$dsn = sprintf(
'mysql:host=%s;port=%s;dbname=%s;charset=utf8mb4',
DB_HOST, DB_PORT, DB_NAME
);
try {
$pdo = 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 => false,
]);
} catch (PDOException $e) {
// 不在页面上泄露密码等细节
die('数据库连接失败,请检查 config.php 中的数据库配置。');
}
return $pdo;
}
/**
* 带前缀的表名。
*/
function tn($table)
{
return DB_PREFIX . $table;
}