PDO 連線到 MySQLMariaDB 伺服器
有兩種方法可以連線到 MySQL / MariaDB 伺服器,具體取決於你的基礎結構。
標準(TCP / IP)連線
$dsn = 'mysql:dbname=demo;host=server;port=3306;charset=utf8';
$connection = new \PDO($dsn, $username, $password);
// throw exceptions, when SQL error is caused
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
// prevent emulation of prepared statements
$connection->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
由於 PDO 旨在與較舊的 MySQL 伺服器版本(不支援預準備語句)相容,因此必須明確禁用模擬。否則,你將失去通常使用預準備語句授予的額外注入預防益處。
你必須記住的另一個設計折衷方案是預設的錯誤處理行為。如果沒有另外配置,PDO 將不會顯示任何 SQL 錯誤的指示。
強烈建議將其設定為異常模式,因為在編寫永續性抽象時會獲得額外的功能(例如:在違反 UNIQUE
約束時有異常)。
套接字連線
$dsn = 'mysql:unix_socket=/tmp/mysql.sock;dbname=demo;charset=utf8';
$connection = new \PDO($dsn, $username, $password);
// throw exceptions, when SQL error is caused
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
// prevent emulation of prepared statements
$connection->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
在類 Unix 系統上,如果主機名是'localhost'
,那麼與伺服器的連線是通過域套接字實現的。