Đã có mã hoạt động ngay bây giờ, mặc dù khá bực bội, tôi chưa bao giờ hiểu được lý do tại sao nó không hoạt động ngay từ đầu! Tôi nghi ngờ có điều gì đó liên quan đến việc không chọn đúng số cổng - có thể là lỗi đánh máy ở đâu đó đã được sửa 'tình cờ' (thay vì cố ý) khi tôi đang thử mọi thứ. Mã này hiện hoạt động (chỉ dành cho MySQL):
$dsn = null;
$options = null;
$this->host = SYSTEM_CONFIG["database"]["host"];
$this->type = SYSTEM_CONFIG["database"]["type"];
$this->name = SYSTEM_CONFIG["database"]["name"];
$this->user = SYSTEM_CONFIG["database"]["user"];
$this->pass = SYSTEM_CONFIG["database"]["pass"];
$this->port = SYSTEM_CONFIG["database"]["port"];
switch ($this->type) {
case "SQLSRV":
// Other untested code...
break;
default:
$dsn = "mysql:host={$this->host};port={$this->port};dbname={$this->name};charset=utf8";
$options = [
PDO::ATTR_PERSISTENT => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_STRINGIFY_FETCHES => false
];
}
try {
$this->pdo = new PDO($dsn, $this->user, $this->pass, $options);
} catch (PDOException $e) {
$this->logError($e);
} catch (Exception $e) {
$this->logError($e);
}