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',那么与服务器的连接是通过域套接字实现的。