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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象第七天----数据库抽象层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 中使用事务

以上是关于面向对象第七天----数据库抽象层PDO的主要内容,如果未能解决你的问题,请参考以下文章

Python基础-第七天-面向对象编程进阶和Socket编程简介

python学习之路-第七天-python面向对象编程简介

python学习第七天

python自动化开发学习第七天

二刷java基础第七天——面向对象(中)

Python第七天