PHP PDO:连接到MySQL / MariaDB服务器

示例

有两种方法可以连接到MySQL / MariaDB服务器,具体取决于您的基础结构。

标准(TCP / IP)连接

$dsn = 'mysql:dbname=demo;host=server;port=3306;charset=utf8';
$connection = new \PDO($dsn, $username, $password);

// 引发SQL错误时引发异常
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
// 防止模仿准备好的语句
$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);

// 引发SQL错误时引发异常
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
// 防止模仿准备好的语句
$connection->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);

在类似Unix的系统上,如果主机名是'localhost',则通过域套接字建立与服务器的连接。