重用PHP PDO连接的最佳做法

时间:2020-08-24 22:34:31

标签: php mysql pdo

我是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文件中重用相同的连接?

0 个答案:

没有答案
相关问题