我是PDO的新手,我试图了解如何充分利用它。
据我所知,PDO的一大优势是能够重用连接。
我习惯于执行这样的方法:
//filename: db.php
<?php
function OpenCon()
{
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$db = "db";
$conn = new mysqli($dbhost, $dbuser, $dbpass,$db) or die("Connect failed: %s\n". $conn -> error);
return $conn;
}
function CloseCon($conn)
{
$conn -> close();
}
?>
通过这种方法,我被迫在每个php文件中包含以下内容:
<?php
include "db.php";
$conn = OpenCon();
//ask queries here...
CloseCon($conn);
?>
其结果是代码重复(包括和函数)以及打开/关闭连接的频率,这可能会使系统变慢。
现在,我正在使用PDO,对于连接到MySQL数据库的每个文件,请执行以下操作:
<?php
$host = '127.0.0.1';
$db = 'db';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
//ask queries here...
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
?>
如您所见,代码重复仍然存在,并且连接数与上面的示例相同,可能我没有使用最佳的PDO。
那么,有没有办法在多个php文件中重用相同的连接?