PDO是PHP Date Object的简称,随PHP5.1发布,支持多种数据库(Firebird、freeTDS、Interbase、MySql等),使用时仅需使用PDO接口中的方法就可以对数据库进行操作,选择不同的数据库仅需修改PDO中的DSN(数据源名称)即可。 PDO是一个“数据库访问抽象层”;作用是统一各种数据库的访问接口,与mysql函数可以相比,跨数据库能力更强;与ADODB相比,效率更高。
linux环境(使用mysql) 在configure命令中添加如下代码
--with-pdo-mysql=/path/to/mysql/installationWindows环境(使用mysql) 在php.ini文件中添加
extension=php_pdo.dll extension=php_mysql_pdo.dll或者将这两句的注释去掉(该文件中的注释格式是#或者:)
首先需要实例化一个PDO对象 PDO构造函数
__constructs(string $dsn[,string $username[,string $password[,array $driver_options]]])$dsn:数据源名,包括主机名端口号和数据库名称 $username:连接数据库的用户名 $password:连接数据库的密码 $dirver_options:连接数据库选项(驱动选项数组){例如array(PDO:ATTR_PERSISTENT => true),这样数据库连接即为持久链接} 例(连接mysql数据库):
<?php $dbms = 'mysql'; $host = 'localhost'; $dbName = 'test'; $user = 'root'; $password = ''; $dsn = "$dbms:host=$host;dbname=$dbName"; try { $dbh = new PDO($dsn,$user,$password); //初始化PDO对象 echo "连接成功!"; foreach ($dbh->query('SELECT * FORM FOO') as $row) { print_r($row); } $dbh = null; //将连接返回的PDO对象置空,相当于将连接断开 } ?>DSN :Date Source Name(数据源名称) 提供连接数据库需要的信息。 格式为三部分:PDO驱动名称(如mysql、sqlite等);冒号和驱动特定的语法。 例如:连接数据库mysql
$dsn="$mysql:host=localhost;port=3303;dbname=test"因为数据库服务器和PHP脚本不在一个服务器上,而数据库尽在特定端口上监听连接请求(mysql是3306),单数据库管理员可能会修改端口号,多以PHP脚本有可能会找不到数据库的端口,此时可以在DSN中包含端口号。
返回执行后受影响的行数,通常用于insert、delete和update语句。
返回PDOStatement对象。
使用prepare预处理查询语句,之后使用execute执行
PDOStatment PDO::prepare(string statement[,array driver_options]); bool PDOStatement::excute([array input_parameters]);fetch_style为控制结果集的返回方式
fetch_style值返回值形式PDO::FETCH_ASSOC关联数组PDO::FETCH_NUM数字索引数组PDO::FETCH_BOTH两者数组形式都有(默认返回)PDO::FETCH_OBJ对象形式PDO::FETCH_BOUND数字索引数组PDO::FETCH_LAZY以关联数组、数字索引数组、对象三种形式返回 cursor_orientation:PDOStatement对象的一个滚动游轮、可用于获取指定的一行 cursor_offset:游标的偏移量使用方法如下:
<?php $dsn = "mysql:host='localhost';port=3306;dbname='test'"; $user = "root"; $password = ""; try { $pdo = new PDO($dsn,$user,$password) //连接数据库,连接失败弹出异常 $query = "select * from user_message"; //sql查询语句 $result = $pdo->prepare($query); //准备查询语句 $result->excute(); //执行查询语句并返回结果集 while($res = $result->fetch(PDO::FETCH_ASSOC)) //获取查询结果并输出 echo $res['id'].$res[...]; }catch(PDOException $e){ die ("Error:".$e->getMessage()."<br>"); } $pdo = NULL; //释放连接fetch_style:同fetch()方法中的fetch_style column_index:字段的索引 返回一个包含结果集所有数据的二维数组,例如:$res[$i][‘id’]、$res[$i][…]等
column_num:设置行中列的索引值,从0开始,若省略该参数,则从第一列开始取值。 返回值 :结果集中下一行中的指定列的值