PDO学习笔记

作者:源码世界时间:2014-06-27分类:SQL评论:0浏览:5199


PDO学习笔记
一.PDO简介
PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。
并不能使用PDO扩展本身执行任何数据库操作,必须使用一个database-specific PDO driver(针对特定数据库的PDO驱动)访问数据库服务器。   
PDO并不提供数据库抽象,它并不会重写SQL或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。
二.Pdo为php带来的便捷
Pdo是基于驱动的数据访问的抽象层工具,以往的php数据库连接都要开启相应的扩展而且不同数据库的sql语法还不相同,这样就导致在更换数据库时要去重写php代码,增加了不必要的重复性工作。有了pdo后以上的更改只需要更换一下数据库驱动就可以了。
三.安装
1.win下pdo的安装
在win下安装比较简单,只需要在php.ini中开启extension=php_pdo.dll和相应的驱动如extension=php_pdo_mysql.dll重启apache就行了。
2.在linux环境下安装
在安装php编译阶段加上--with-pdo-mysql=mysql的安装路径
四.细说pdo
从php手册中可以了解到pdo一共有三个类PDO类,PDOStratement类,PDOException类
1.PDO类
这是与数据库连接有关的类,也是数据底层类
首先需要先实例化一个PDO对象
$pdo = new PDO('mysql:host=localhost;dbname=test','username','password'[,driver_option]);
这里需要3/4个参数:第一个参数是指定数据库引擎,第二,三个参数是数据库用户名密码,第三个是pdo的初始化配置(包括是否开启持久化连接,超时时间等具体的查看pdo的常量)。
 
PDO对象的方法
    a.执行sql语句的方法:
        $pdo->exec();//执行有影响行数的语句,update,delete,insert等写操作,返回所影响的行数。
        $pdo->query();//执行有结果集的语句,select等读操作,返回一个PDOStatement对象。
        $pdo->prepare();//执行所有语句,与PDOStatement对象一起使用,返回一个PDOStatement对象。
    b.获取最后一天数据的自增ID
        $pdo->lastInsertId();
    c.事务,执行事物要保证数据库和PDO的自动提交处于关闭状态
        $pdo->beginTrasaction();//开启事务
        $pdo->commit();//提交事务
        $pdo->callback;//事务回滚
    d.PDO属性设置,查看
        $pdo->setAttribute();//设置PDO属性
        $pdo->getAttibute();//获取/显示PDO属性
        $pdo->getAvailableDrivers();//获取/显示PDO驱动
    e.错误提示,错误信息
        $pdo->errorCode();//显示错误的代码,数字
        $pdo->errorInfo();//显示错误信息,数组
        PDO的错误级别分三种,可以在创建pdo对象是定义
        默认 ERRMODE_SILENT 代号0 //错误发生时不进行任何提示
        警告 ERRMODE_WARNING 代号 1 //警告信息
        异常 ERRMODE_EXCEPTION 代号 2 //异常信息
2.PDOStatement对象,预处理对象
常规的mysql数据处理是每执行一条语句与服务器进行一次连接,而pdo是有预处理先在服务器创建一个预处理状态,然后把每一条语句作为预处理的参数来用,节省了服务器的开支。
    a.准备一条语句
        $stmt = $pdo->prepare(insert into test (name,age,info) value(':name',':age','info'));
        $stmt = $pdo->prepare(insert into test (name,age,info) value(?,?,?));
        //PDOStatement是有PDO对象而来,prepare参数的写法有两种形式,第一种事占位符?相当于索引 数组 有一定的顺序性;第二种是名称参数 相当于关联数组 无顺序性
    b.绑定参数
        $stmt->bindParam(':name',$name);
        $stmt->bindParam(':age',$age);
        $stmt->bindParam(':info',$info);
        或
        $stmt->bindParam(1,$name);
        $stmt->bindParam(2,$age);
        $stmt->bindParam(3,$info);
 
        也可以写成
        $stmt->bindParam(array(':name'=>$name,':age'=>$age,':info'=>$info));
        $stmt->bindParam(array($name,$age,$info));
 
    c.执行语句,在执行之前也可以不绑定参数,而在执行时进行绑定如:$stmt->execute(array(':name'=>$name,':age'=>$age.':info'=>$info));
        $stmt->execute();
 
    d.获取结果集
        $stmt->fetch();//获取一条记录混合了关联数组和索引数组,可以给定参数来规定是关联或是索引如$stmt->fetch(PDO::FETCH_ASSOC)也可以用$stmt->setFetchMode()来统一定义
        $stmt->fetchAll();//获取所有记录
        $stmt->fetchColumn();//获取字段
        $stmt->rowCount();//获取总行数
        $stmt->columnCount();//总字段数

如果您没有找到适合你的解决方案,请联系我们寻求帮助支付鼓励

返回顶部
分享按钮