PHP的PDO连接讲解

PHP PDO连接

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。

连接到 MySQL

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

注意:如果有任何连接错误,将抛出一个 PDOException 异常对象。

处理连接错误

<?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();
}
?>

连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。

要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。

如果不这么做,PHP 在脚本结束时会自动关闭连接。

关闭一个连接:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 在此使用连接
// 现在运行完成,在此关闭连接
$dbh = null;
?>

很多 web 应用程序通过使用到数据库服务的持久连接获得好处。

持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。

持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。

持久化连接

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

注意:如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • PHP的PDO预定义常量讲解

    PHP PDO预定义常量 以下常量由本扩展模块定义,因此只有在本扩展的模块被编译到PHP中,或者在运行时被动态加载后才有效. 注意:PDO使用类常量自PHP 5.1.以前的版本使用的全局常量形式PDO_PARAM_BOOL中. PDO::PARAM_BOOL (integer) 表示布尔数据类型. PDO::PARAM_NULL (integer) 表示 SQL 中的 NULL 数据类型. PDO::PARAM_INT (integer) 表示 SQL 中的整型. PDO::PARAM_STR

  • PDO::exec讲解

    PDO::exec PDO::exec - 执行一条 SQL 语句,并返回受影响的行数(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 int PDO::exec ( string $statement ) PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数. PDO::exec() 不会从一条 SELECT 语句中返回结果.对于在程序中只需要发出一次的 SELECT 语句,可以考虑使用PDO::query(). 参数

  • PHP的PDO事务与自动提交

    PHP PDO 事务与自动提交 现在通过 PDO 连接上了,在开始进行查询前,必须先理解 PDO 是如何管理事务的. 事务支持四大特性(ACID): 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 通俗地讲,在一个事务中执行的任何操作,即使是分阶段执行的,也能保证安全地应用于数据库,并在提交时不会受到来自其他连接的干扰. 事务操作也可以根据请求自动撤销(假设还没有提交),这使得在脚本中处理错误更加容易. 事务通常是通过

  • PHP的mysqli_stmt_init()函数讲解

    PHP mysqli_stmt_init() 函数 初始化声明并返回 mysqli_stmt_prepare() 使用的对象: <?php // 假定数据库用户名:root,密码:123456,数据库:codingdict $con=mysqli_connect("localhost","root","123456","codingdict"); if (mysqli_connect_errno($con)) { ech

  • PHP的PDO错误与错误处理

    PHP PDO 错误与错误处理 PDO::ERRMODE_SILENT 此为默认模式. PDO 将只简单地设置错误码,可使用PDO::errorCode()和PDO::errorInfo()方法来检查语句和数据库对象.如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的PDOStatement::errorCode()或 PDOStatement::errorInfo()方法.如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法. PDO::ERRMODE_WA

  • PHP的PDO大对象(LOBs)

    PHP PDO 大对象 (LOBs) 应用程序在某一时刻,可能需要在数据库中存储"大"数据. "大"通常意味着"大约 4kb 或以上",尽管某些数据库在数据达到"大"之前可以轻松地处理多达 32kb 的数据.大对象本质上可能是文本或二进制. 在PDOStatement::bindParam()或PDOStatement::bindColumn())调用中使用PDO::PARAM_LOB类型码可以让 PDO使用大数据类型. PD

  • PHP的PDO预处理语句与存储过程

    PHP PDO 预处理语句与存储过程 很多更成熟的数据库都支持预处理语句的概念. 什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次.当查询准备好后,数据库将分析.编译和优化执行该查询的计划.对于复杂的查询,此过程要花费较长的时间,如果需要以不同参数多次重复相同的查询,那么该过程将大大降低应用程序的速度.通过使用预处理语句,可以避免重复分析/编译/优化周期

  • PHP的mysqli_ssl_set()函数讲解

    PHP mysqli_ssl_set() 函数 实例 创建 SSL 连接: <?php $con=mysqli_init(); if (!$con) { die("mysqli_init failed"); } mysqli_ssl_set($con,"key.pem","cert.pem","cacert.pem",NULL,NULL); if (!mysqli_real_connect($con,"loca

  • PHP的mysqli_thread_id()函数讲解

    PHP mysqli_thread_id() 函数 返回当前连接的线程 ID,然后杀死连接: <?php // 假定数据库用户名:root,密码:123456,数据库:codingdict $con=mysqli_connect("localhost","root","123456","codingdict"); if (mysqli_connect_errno($con)) { echo "连接 MySQL

  • PHP的mysqli_rollback()函数讲解

    PHP mysqli_rollback() 函数 关闭自动提交,做一些查询,提交查询,然后回滚当前事务: <?php // 假定数据库用户名:root,密码:123456,数据库:codingdict $con=mysqli_connect("localhost","root","123456","codingdict"); if (mysqli_connect_errno($con)) { echo "连接

随机推荐