最新消息:

PHP之PDO基本操作以及准备语句

PHP wuaiyishicongcipiaobobansheng 100浏览 0评论

工欲善其事必先利其器,好吧,说人话,先做前期的准备工作

第一步,做测试我们都要打印数组,对象等等,可是php自带的print_r,var_dump显示起来不好看

PHP之PDO基本操作以及准备语句

这看了都头疼,自己写一个打印函数,获取待打印的数据的类型gettype(),别什么都var_dump;

PHP之PDO基本操作以及准备语句

测试一下,哦还不错,数组的结构清楚了.不得不说一句pre标签真的好用.顺便说下,打印string,integer类型的时候用echo而不用print,因为print有返回值(值为1),而echo没有,简而言之,快点

PHP之PDO基本操作以及准备语句

第二步,注册异常处理函数set_exception_handler(),php自带的异常报错看起来真的不咋的,这颜色真的不舒服

PHP之PDO基本操作以及准备语句

我们自己写一个PHP之PDO基本操作以及准备语句

结果如下

PHP之PDO基本操作以及准备语句

凑合着用吧PHP之PDO基本操作以及准备语句

PDO的优点就不过介绍了,正式开工

PDO与数据库交互=>建立一个服务器连接并选择一个数据库,PDO通过构造函数完成

具体参数如下

PHP之PDO基本操作以及准备语句

那么开始,我的数据,库主机127.0.0.1,数据库app_ylts,用户名root,密码空.我的数据库采用utf8编码,下面是bs_node表中部分数据

PHP之PDO基本操作以及准备语句

开始连接数据库并且设置PDO的报错模式.

很多属性可以调整pdo的行为(具体参数有兴趣的朋友可以去查查),获取属性getAttribute(),设置属性setAttribute()

PHP之PDO基本操作以及准备语句

这里说明一下为什么采取PDO::ERRMODE_EXCEPTION报错模式,因为PDO抛出的异常类PDOException继承的所有异常的基类Exception,而我们开始准备时注册了异常报错函数myException,方便我们查看以及记录错误(这功能没写),这也是我们一开始注册了异常报错函数的原因,一举两得.

下面查询(执行有结果集或者结果所影响的行数无关紧要时用query(),执行不返回结果集[insert,update,delete等]用exec()返回所影响的行数)PHP之PDO基本操作以及准备语句

大功告成,截图

PHP之PDO基本操作以及准备语句

等等,不对啊,中文乱码,还返回了数组的索引,明显不是我们想要的

先解决中文乱码的问题

$connect ->exec(‘SET NAMES utf8’);

PHP之PDO基本操作以及准备语句

乱码解决,PDO查询默认的返回结果集(我们查询的返回值$node_list是一个对象).在调用fetchAll()方法=>默认的话是返回既按列名索引又按在行中的数值偏移索引的值数组,如上图.这不是我们想要的,我们只需要返回列名索引的值数组,那么在调用fetchAll()方法时带参数[PDO::FETCH_ASSOC]fetchAll()返回所有的结果集行(二维数组);fetch()结果集的下一行(一维数组),如果到末尾则false

my_print($node_list->fetchAll(PDO::FETCH_ASSOC));

PHP之PDO基本操作以及准备语句

这里有引发了一个问题,我们不可能每次都这样带个参数吧?,其实在连接数据库是就可以通过参数$driver_options(数组的形式)调整PDO的行为

PHP之PDO基本操作以及准备语句

PHP之PDO基本操作以及准备语句

fetch用法

PHP之PDO基本操作以及准备语句

对比fetchAll,清晰明了

PHP之PDO基本操作以及准备语句

PDO准备语句

每次发送查询给mysql服务器时,都必须解析该查询的语法,确保结构正确并且能够正确执行.我们大量数据的插入时,反复执行相同的查询.准备语句能在服务器上缓存查询的语法和执行过程,而服务器和客户端之间传输有变化的列值,以此来消除额外的开销

不使用prepare

PHP之PDO基本操作以及准备语句

使用prepare

PHP之PDO基本操作以及准备语句

结果

PHP之PDO基本操作以及准备语句

使用prepare还要慢点,你这是在逗我?

PHP之PDO基本操作以及准备语句

革命尚未成功,我在多测试几次.不对,测试的方法有问题,不可控因素太多;改变测试方法

数据

PHP之PDO基本操作以及准备语句

不使用prepare

PHP之PDO基本操作以及准备语句

使用prepare

PHP之PDO基本操作以及准备语句

数剧因为显示原因,没有贴出来完全.最后测试(多次测试取平均值),当插入数据越来越多的时候prepare的优势就会越来越明显,

PHP之PDO基本操作以及准备语句

现在正在考虑封装自己的数据操作类,以及实现连贯操作比如Db::getInstance()->where($where)->orderBy($orderBy)->select(),这种形式,可能下一篇会写,下周见!

PHP之PDO基本操作以及准备语句

转载请注明:PHP学习 » PHP之PDO基本操作以及准备语句

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址