在頁面頭部 require_once('Connections/member.php') 連接數據庫,但頻繁導致流量異常。代碼中主機、用戶名、密碼均為空串直接連接。
$hostname_member = "" 等同於 localhost,但無密碼連接極不安全,且可能被拒絕導致重試風暴。mysql_* 擴展:PHP 7+ 已移除,應改用 mysqli 或 PDO。<?php
// Connections/member.php
class DB {
private static $instance = null;
private $pdo;
private function __construct() {
$dsn = 'mysql:host=127.0.0.1;dbname=your_db;charset=utf8mb4';
$this->pdo = new PDO($dsn, 'db_user', 'db_pass', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => true, // 持久連接
PDO::ATTR_EMULATE_PREPARES => false,
]);
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function getPDO() {
return $this->pdo;
}
}
// 使用方式
$pdo = DB::getInstance()->getPDO();
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
?>
.env 或獨立配置文件,不硬編碼。PDO::ATTR_PERSISTENT 減少握手開銷。ERRMODE_EXCEPTION 統一錯誤處理。$pdo = null。