PHP PDO Connections

PHP PDO 参考手册PHP PDO Reference Manual

Connections are established by creating an instance of the PDO base class. No matter which driver is used, the PDO class name is used.

Connecting to MySQL

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>

Note:If there are any connection errors, a PDOException exception object will be thrown.

Handling Connection Errors

<?php
try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

After successfully connecting to the database, an instance of the PDO class is returned to the script. This connection remains active for the lifetime of the PDO object.

To close the connection, you need to destroy the object to ensure that all remaining references to it are removed. You can assign a NULL value to the object variable.

If you don't do this, PHP will automatically close the connection when the script ends.

Closing a Connection:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 在此使用连接


// 现在运行完成,在此关闭连接
$dbh = null;
?>

Many web applications benefit from using persistent connections to database services.

Persistent connections are not closed after the script ends and are cached. They are reused when another script with the same credentials requests a connection.

Persistent connection caching avoids the overhead of establishing a new connection every time a script needs to have a session with the database, making web applications faster.

Persistent Connections

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));
?>

Note:If you want to use persistent connections, you must set PDO::ATTR_PERSISTENT in the driver options array passed to the PDO constructor. If this attribute is set with PDO::setAttribute() after the object has been initialized, the driver will not use persistent connections.


PHP PDO 参考手册PHP PDO Reference Manual Other Extensions