使用方式  特点一:支持跨数据库

      1:首先实例化PDO,创建PDO对象的四个必备参数:host(哪一种类型的数据库,mysql/orcal/SQLserver等);dbname(数据库的名称);charset(设置数据库的字符  集);port(端口号);

      

    2.发送sql指令:分为两种;$pdo->query();//返回的是结果是对象,需要首先对结果集进行遍历,处理单条结果集用fetch(),如果需要处理所有结果集则使用fetchAll();

  

  

    第二种:$pdo->exec(数据增删改差操作指令);//返回的是受影响的行数;注意:在PDO中有LastInsertId,这是PDO中独一无二的,其他地方都不能使用;

第二种特点:支持预处理机制;

      PDO中的预处理机制:PDO实际上并没有真正使用预处理,是在模拟预处理方式,在将语句传给sql服务器之前会把参数数据插入到语句中,这样更安全,也避免了许多潜在的SQL注入;关键字:prepare;

    

    我们使用了PDO的预处理机制,首先将sql语句插入数据库中,并在实际参数位置使用了?(占位符)或者:name的方式来替代;这样有助于,防止恶意的sql注入,因为用户不论向数据库里传递什么数据,都会被传进占位符里并当成一个普通字符串解析;同时也有利于提高数据库执行效率,因为数据库已经做好了相关的增删改差准备,只需要用户的实际数据传到即可执行;

    注意:有两种创建参数的方法,命名的与匿名的(不可以出现在同一个语句中),然后可以通过绑定参数的形式在巧劲输入;

    绑定参数的形式:bindValue;在使用命名参数的时候一定要包含进冒号(:).PDO还支持一个bindParam方法,可以通过绑定参数值,也就是它只在语句执行时查找相应的数值;

第三种:支持事务回滚

    事务的概念:一个事务就是执行一组查询,但是并不保存他们影响到的数据库中,这样的好处就是如果执行了4条相互依赖的插入语句,当有一条失败后你可以回滚使其他数据不能插入到数据库中,确保相互依赖的字段能够正确插入,但需要用的数据库引擎支持事务;

    在数据库命令下:show create tabe + 表名查看数据库引擎,如果不是innodb引擎,则使用alert table 表名 engine = innodb进行引擎修改;

    

  

 在使用事务时首先开启事务:beginTransaction()方法开启一个事务,在开启事务后可以执行数据操作,如果事务执行失败则进行rollback事务回滚;

  

你可以选择PDO将返回的是什么类型的结果集,如PDO::FETCH_ASSOC,会允许你使用  $result['column_na']或者PDO::FETCH_OBJ,返回一个匿名对象,以便使用$result->column_name;

  

[麦先生]学习PDO循序渐进使用方式的更多相关文章

  1. [转]Windows网络编程学习-面向连接的编程方式

    直接附上原文链接:windows 网络编程学习-面向连接的编程方式

  2. JavaWeb学习——页面跳转方式

    JavaWeb学习——页面跳转方式 摘要:本文主要学习了请求转发和响应重定向,以及两者之间的区别. 请求转发 相关方法 使用HttpServletRequest对象的 getRequestDispat ...

  3. 阿里云Web应用防火墙采用规则引擎、语义分析和深度学习引擎相结合的方式防护Web攻击

    深度学习引擎最佳实践 {#concept_1113021 .concept} 阿里云Web应用防火墙采用多种Web攻击检测引擎组合的方式为您的网站提供全面防护.Web应用防火墙采用规则引擎.语义分析和 ...

  4. 学习PDO中的错误与错误处理模式

    在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...

  5. CANopen学习——PDO

    查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html   PDO定义: 过程数据对象,用来传输实时数据.因为 ...

  6. mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

    相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...

  7. Tornado学习笔记(三) 请求方式/状态码

    本章我们来学习 Tornado 支持的请求方式 请求方式 Tornado支持任何合法的HTTP请求(GET.POST.PUT.DELETE.HEAD.OPTIONS).你可以非常容易地定义上述任一种方 ...

  8. python学习: 如何循序渐进学习Python语言

    大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...

  9. 学习PDO啦

    通过查找资料对PDO有了一定的了解,PDO(PHP Data Object )为PHP数据对象,为PHP访问数据库提供了一个轻量级的借口,但PDO本生不能实现访问数据库的任何功能,只能通过数据库的PD ...

随机推荐

  1. sql 添加修改说明

    --为字段a2添加描述信息 EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表 ...

  2. YII页面跳转

    $criteria = new CDbCriteria; $criteria->select = array('ziduan"); $res = Model::model()-> ...

  3. Laravel Predis Error while reading line from the server.

    问题 Laravel说明文档中的 Redis 发布与订阅案例,命令行运行php artisan redis:subscribe 到60s自动断开并报错 [Predis\Connection\Conne ...

  4. NYOJ 58 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  5. Java正则表达式实用教程

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.java.util.regex包主要包括以下三个类:Pattern.Matcher和PatternSynta ...

  6. ServiceLocator是反模式

    关于ServiceLocator模式 http://www.cnblogs.com/hwade/archive/2011/01/30/CommonServiceLocator.html 为什么是Ant ...

  7. js中this的理解

    平常用this很多,对this的理解就是this是对应执行环境,然而很多时候效果并不是想要的,最近看了一些谈到this的笔记和书籍,总结下. 对this的误解: this是指向函数本身 先上个demo ...

  8. jquery操作radio单选按钮、checked复选框。

    一.radio 取值: $('input[name=radio]:checked').val(); 二.checked 判断checked是否被选中 $("input[type='check ...

  9. JSP内置对象--request对象

    本文主要介绍JSP中的request对象 request对象的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值 getAttri ...

  10. 【读书笔记】iOS-防止通讯协议被轻易破解的方法

    开发者可以选择类似Protobuf之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度. 参考资料: <iOS开发进阶> --唐巧