PDO 连接字符串:最好的方法是什么?

Php*_*_EU 2 php mysql sql pdo mariadb

我想使用 php/pdo 制作一个后端应用程序。我发现了很多不同的方法来处理 PDO 连接字符串。我想知道使用 pdo 执行连接字符串的最佳方法是什么。这是执行连接字符串的最佳方法还是我应该使用其他代码。欢迎任何建议或调整!

这就是我现在所拥有的:

<?php

$host = "localhost";
$db = "phpcrud";
$username = "root";
$password = "";

$conn = new PDO("mysql:host=$host;dbname=$db;charset=UTF8", $username, $password, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
]);

?>
Run Code Online (Sandbox Code Playgroud)

You*_*nse 5

这个问题并不像看起来那么容易。我写了一个规范的示例, 如何使用 PDO 连接到 MySQL

那么让我们看看这里有哪些可以改进的地方:

  • 字符集可以设置为utf8mb4(现在这是MySQL的推荐标准,因为它支持完整的UTF-8字符集,而utf8只是有限的子集)
  • 最好关闭仿真模式(为了方便,有些人会说更好的安全性)
  • PDO 类名最好以全局命名空间为前缀,这样代码就能够在命名空间环境中工作。

所以你开始吧:

$options = [
    \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new \PDO($dsn, $username, $password, $options);
Run Code Online (Sandbox Code Playgroud)