面向对象第七天----数据库抽象层PDO

php操作mysql方法:
mysql
mysqli
PDO

数据库抽象层--PDO (重点)
=======================================================================
1. pdo的作用
      pdo(php data object) 扩展类库,为PHP访问数据库提供了轻量级的,统一的接口。无论使用
      什么数据库,都可以通过一致的函数执行查询和获取数据
优势:
      ① 对不同的数据库提供统一的操作方式
      ② 对执行批量SQL效率高,对PHP操作SQL进行优化
      ③ PDO提供了预处理机制,提高安全性 防止SQL注入
劣势:
    学习难度大
mysqli 和 pdo 比较
      ① 处理海量数据 PDO效率高
      ② 多并发操作 PDO 效率高

2. pdo的安装(直接过)
      ①php.ini 开启 extension=php_pdo.dll extension=php_pdo_mysql.dll
      ②重启apache

3. 创建PDO对象
    3.1 以多种方式调用构造方法
        DSN : data source name 数据库类型 host dbname
           ① 直接在构造方法中传入DSN USER PASS
                 mysql:host=localhost;dbname=s44
            ② 在php.ini的[PDO]中定义:
再看看
③ 写配置文件定义常量
            将参数写成常量 dbconfig.php 中引入

3.2 PDO与链接相关的选项
    设置连接数据的值: setAttribute(attrname/attrnum,attrname/attrnum);
        获取连接属性的值(两种方式): getAttribute() (推荐使用) 或者 new PDO 第四个参数
              ① 错误处理方式 PDO::ATTR_ERRMODE
              ② 是否自动提交 PDO::ATTR_AUTOCOMMIT
              ③ 结果集数组方式 PDO::ATTR_DEFAULT_FETCH_MODE

3.3 PDO的字符集设置
    $pdo->exec(‘set names utf8‘);
    或者
     $pdo->query(‘set names utf8‘);
3.3 PDO的错误处理模式 针对下面SQL执行部分
    设置 PDO::ATTR_ERRMODE
        值: PDO::ERRMODE_SILENT 不报错(默认)
        值: PDO::ERRMODE_WARNING 警告
        值: PDO::ERRMODE_EXCEPTION 异常(推荐)

echo ‘默认的错误模式值是:‘.$pdo->getAttribute(PDO::ATTR_ERRMODE).‘<BR>‘.‘<br>‘;//默认的错误模式值是:0
echo ‘不报错模式的值是:‘.PDO::ERRMODE_SILENT.‘<BR>‘.‘<br>‘;//不报错模式的值是:0
echo ‘WARNING错模式的值是:‘.PDO::ERRMODE_WARNING.‘<BR>‘.‘<br>‘;// WARNING错模式的值是:1
echo ‘异常模式模式的值是:‘.PDO::ERRMODE_EXCEPTION.‘<BR>‘.‘<br>‘;//异常模式模式的值是:2

3.4 PDO对象中的成员方法
    query() //执行查询操作
    exec() //执行写入操作
    setAttribute() //设置连接属性
    getAttribute() //获取连接属性
    lastInsertId() //获取最后插入ID

4. PDOStatment 对象
    4.1 PDOStatmen中的成员方法
        fetch
        fetchALl
4.2 设置返回结果的数组类型
    PDO::FETCH_ASSOC
    PDO::FETCH_NUM
    PDO::FETCH_BOTH
    PDO::FETCH_OBJ stdClass填充属性

//默认的遍历数组的模式 是 BOTH:3
echo ‘默认的遍历数组的模式 是 BOTH:‘.$pdo->getAttribute(PDO::ATTR_DEFAULT_FETCH_MODE).‘<BR>‘.‘<BR>‘;
echo ‘关联数组模式的ASSOC值是 ‘.PDO::FETCH_ASSOC.‘<BR>‘.‘<BR>‘; //关联数组模式的ASSOC值是 2
ECHO ‘索引数组模式NUM的值是 :‘.PDO::FETCH_NUM.‘<BR>‘.‘<BR>‘;//索引数组模式NUM的值是 :3
ECHO ‘所有模式的BOTH值是:‘.PDO::FETCH_BOTH.‘<BR>‘.‘<BR>‘;//所有模式的BOTH值是:4
ECHO ‘对象模式OBJ的值是:‘.PDO::FETCH_OBJ.‘<BR>‘.‘<BR>‘;//对象模式OBJ的值是:5

4.3 pdo处理结果集方式
1、fetch 遍历
2、fetchAll 全部获取
3、直接遍历$stmt对象

5. pdo预处理的使用(重点)
5.1 预处理的优点
防止SQL注入
批处理能够提高SQL处理效率

5.2 预处理的步骤
    1、准备SQL 用占位符 代替条件参数 (? / :name )
    2、执行预处理 prepare 返回PDOstatement对象
    3、执行绑定参数
    4、执行SQL
5.3 预处理sql方式

5.4 绑定参数的方式

5.5 对查询结果进行绑定

6. pdo事务机制
6.1 MySQL 事务

6.2 MYSQL客户端中操作过程:

6.3 PDO 中使用事务

时间: 2024-12-07 07:11:01

面向对象第七天----数据库抽象层PDO的相关文章

PHP数据库抽象层--PDO(PHP Data Object) [一]

1.简介:(PDO数据库访问抽象层,统一各种 数据库的访问接口 ) PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能. 注意利用 PDO 扩展自身并不能实现任何数据库功能:必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务. PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO 不不提供 数据库 抽象层:它不会重写

数据库抽象层 - PDO

数据库抽象层: 在数据迁移和项目操作多数据库时,为了便于操作而提供一种的解决方案. 当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL. 代码规划必须规范,尽量使用相同的数据进行对象实例化,并且使用相同的数据库抽象层(如PDO).这样只需要改变系统的配置文件即可迁移数据库. 目前,使用PHP进行不同的数据库系统开发,这些系统很不相同,而许多数据库抽象层在PHP的层次有所不同,但彼此使用方法相当,它的发展无疑会提高开发效率. 常见

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2

18.2  PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如,使用PHP的MySQL或MySQLi扩展函数,只能访问MySQL数据库:如果需要处理Oracle数据库,就必须安装和重新学习PHP中处理Oracle的扩展函数库,每种数据库都有对应的扩展函数,如图18-3所示.应用每种数据库时都需要学习特定的函数库,这样是比较麻烦的,更重要的是这使得数据库间的移植

数据库抽象层PDO

PDO(PHP Data Object),数据库访问抽象层,统一各种数据库的访问接口. PDO特性:编码一致性.灵活性.高性能.面向对象特性. PDO只是一个抽象的接口层,本身并不能操作数据库. 一.PDO安装与配置 1.配置PHP配置文件,开启相应扩展 extension = php_pdo.dll 2.开启响应数据库扩展 extension = php_pdo_mysql.dll 3.通过查看phpinfo可以看到PDO扩展的详细信息 二.PDO连接数据库 1.通过参数的形式连接数据库[建议

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 1

现在,如果你已经能熟练地使用MySQL客户端软件来操作数据库中的数据,就可以开始学习如何使用PHP来显示和修改数据库中的数据了.PHP提供了标准的函数来操作数据库.在PHP 5以上的版本中可以使用MySQL和MySQLi两套扩展函数,MySQLi是PHP 5中新增的,是对MySQL扩展的改进.但由于历史遗留问题,很多老项目是在PHP 4时使用MySQL扩展开发的,如果在原有的项目上进行二次开发,或者找一些学习的例子,都要求开发人员会使用MySQL扩展函数.如果是新设计的项目,则推荐使用MySQL

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 4

18.4  创建PDO对象 使用PDO在与不同数据库管理系统之间交互时,PDO对象中的成员的方法是统一各种数据库的访问接口,所以在使用PDO与数据库交互之前,首先要创建一个PDO对象.在通过构造方法创建对象的同时,需要建立一个与数据库服务器的连接,并选择一个数据库.PDO的构造方法原型如下: __construct ( string dsn [, string username [, string password [,   array driver_options]]] )        //

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 8

18.6.4  执行准备好的查询 当准备好查询并绑定了相应的参数后,就可以通过调用PDOStatement类对象中的execute()方法,反复执行在数据库缓存区准备好的语句了.在下面的示例中,向前面提供的contactInfo表中使用预处理方式连续执行同一条INSERT语句,通过改变不同的参数添加两条记录,代码如下所示: 如果你只是要传递输入参数,并且有许多这样的参数要传递,那么,下面示例提供的快捷方式语法会非常有帮助.该示例通过在execute()方法中提供一个可选参数,该参数是由准备查询中

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 7

18.6  PDO对预处理语句的支持 在生成网页时,许多PHP脚本通常都会执行除参数外其他部分完全相同的查询语句.针对这种重复执行一个查询,但每次迭代使用不同参数的情况,PDO提供了一种名为预处理语句(Prepared Statement)的机制,如图18-6所示.它可以将整个SQL命令向数据库服务器发送一次,以后如果参数发生变化,数据库服务器只需对命令的结构做一次分析就够了,即编译一次,可以多次执行.它会在服务器上缓存查询的语句和执行过程,只在服务器和客户端之间传输有变化的列值,以此消除额外的

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12

18.9  管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PDO的应用,并没有将数据表的操作封装成一个数据库操作类,而是采用了过程化的编写方式,用最直接的方式实现. 18.9.1  需求分析 本例主要的目标是实现对图书信息表books的管理过程,包括添加图书.修改图书.删除图书.遍历图书列表.搜索图书等操作.创建数据表books的SQL语句如下所示. 创建后,