PHP 5 PDO 参考手册
PHP 数据对象 (PDO) 扩展为 PHP 访问数据库定义了一个轻量级的一致接口
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据
PDO 随 PHP5.1 发行
PHP 5.0 可以使用 PECL 扩展安装
PDO 安装
可以通过 PHP 的 phpinfo() 函数来查看是否安装了 PDO 扩展
在 Unix 系统上安装 PDO
在 Unix 上或 Linux 上需要添加以下扩展
extension=pdo.so
Windows 用户
PDO 和所有主要的驱动作为共享扩展随 PHP 一起发布,要激活它们只需简单地编辑 php.ini 文件,并添加以下扩展
extension=php_pdo.dll
除此之外还有以下对应的各种数据库扩展
;extension=php_pdo_firebird.dll ;extension=php_pdo_informix.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_oci8.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll
在设定好这些配置后,只要重启PHP 或 Web 服务器即可
范例
这个范例使用 PDO 连接到本机的 MySQL 数据库
<?php $dbms = 'mysql'; //数据库类型 $host = 'localhost'; //数据库主机名 $dbname = 'test'; //使用的数据库 $user = 'root'; //数据库连接用户名 $passwd = ''; //对应的密码 $dsn = "$dbms:host=$host;dbname=$dbname"; try { $dbh = new PDO($dsn, $user, $passwd); //初始化一个PDO对象 echo "连接成功<br/>"; /*进行一次搜索操作 foreach ($dbh->query('SELECT * from FOO') as $row) { print_r($row); //你可以用 echo($GLOBAL); 来看到这些值 } */ $dbh = null; } catch (PDOException $e) { die ("Error!: " . $e->getMessage() . "<br/>"); }
PDO 默认不是使用长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样
<?php $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
PDO 基础知识
PDO 函数列表
PDO 类
方法名 | 描述 |
---|---|
PDO::beginTransaction | 启动一个事务 |
PDO::commit | 提交一个事务 |
PDO::__construct | 创建一个表示数据库连接的 PDO 实例 |
PDO::errorCode | 获取跟数据库句柄上一次操作相关的 SQLSTATE |
PDO::errorInfo | 返回最后一次操作数据库的错误信息 |
PDO::exec | 执行一条 SQL 语句,并返回受影响的行数 |
PDO::getAttribute | 取回一个数据库连接的属性 |
PDO::getAvailableDrivers | 返回一个可用驱动的数组 |
PDO::inTransaction | 检查是否在一个事务内 |
PDO::lastInsertId | 返回最后插入行的ID或序列值 |
PDO::prepare | 备要执行的SQL语句并返回一个 PDO Statement 对象 |
PDO::query | 执行 SQL 语句,返回PDO Statement对象,可以理解为结果集 |
PDO::quote | 为SQL语句中的字符串添加引号 |
PDO::rollBack | 回滚一个事务 |
PDO::setAttribute | 设置属性 |
PDO Statement 类
方法名 | 描述 |
---|---|
PDOStatement::bindColumn | 绑定一列到一个 PHP 变量 |
PDOStatement::bindParam | 绑定一个参数到指定的变量名 |
PDOStatement::bindValue | 把一个值绑定到一个参数 |
PDOStatement::closeCursor | 关闭游标,使语句能再次被执行 |
PDOStatement::columnCount | 返回结果集中的列数 |
PDOStatement::debugDumpParams | 打印一条 SQL 预处理命令 |
PDOStatement::errorCode | 获取跟上一次语句句柄操作相关的 SQLSTATE |
PDOStatement::errorInfo | 获取跟上一次语句句柄操作相关的扩展错误信息 |
PDOStatement::execute | 执行一条预处理语句 |
PDOStatement::fetch | 从结果集中获取下一行 |
PDOStatement::fetchAll | 返回一个包含结果集中所有行的数组 |
PDOStatement::fetchColumn | 从结果集中的下一行返回单独的一列 |
PDOStatement::fetchObject | 获取下一行并作为一个对象返回 |
PDOStatement::getAttribute | 检索一个语句属性 |
PDOStatement::getColumnMeta | 返回结果集中一列的元数据 |
PDOStatement::nextRowset | 在一个多行集语句句柄中推进到下一个行集 |
PDOStatement::rowCount | 返回受上一个 SQL 语句影响的行数 |
PDOStatement::setAttribute | 设置一个语句属性 |
PDOStatement::setFetchMode | 为语句设置默认的获取模式 |