[麦先生]学习PDO循序渐进使用方式
使用方式 特点一:支持跨数据库
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循序渐进使用方式的更多相关文章
- [转]Windows网络编程学习-面向连接的编程方式
直接附上原文链接:windows 网络编程学习-面向连接的编程方式
- JavaWeb学习——页面跳转方式
JavaWeb学习——页面跳转方式 摘要:本文主要学习了请求转发和响应重定向,以及两者之间的区别. 请求转发 相关方法 使用HttpServletRequest对象的 getRequestDispat ...
- 阿里云Web应用防火墙采用规则引擎、语义分析和深度学习引擎相结合的方式防护Web攻击
深度学习引擎最佳实践 {#concept_1113021 .concept} 阿里云Web应用防火墙采用多种Web攻击检测引擎组合的方式为您的网站提供全面防护.Web应用防火墙采用规则引擎.语义分析和 ...
- 学习PDO中的错误与错误处理模式
在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...
- CANopen学习——PDO
查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html PDO定义: 过程数据对象,用来传输实时数据.因为 ...
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...
- Tornado学习笔记(三) 请求方式/状态码
本章我们来学习 Tornado 支持的请求方式 请求方式 Tornado支持任何合法的HTTP请求(GET.POST.PUT.DELETE.HEAD.OPTIONS).你可以非常容易地定义上述任一种方 ...
- python学习: 如何循序渐进学习Python语言
大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...
- 学习PDO啦
通过查找资料对PDO有了一定的了解,PDO(PHP Data Object )为PHP数据对象,为PHP访问数据库提供了一个轻量级的借口,但PDO本生不能实现访问数据库的任何功能,只能通过数据库的PD ...
随机推荐
- [moka同学笔记]一、Yii2.0课程笔记(魏曦老师教程)
第一节 第二节 课程内容
- ajax onblur 用法
value为当前框中的值 <input name="num"type="text" onblur="changeorder(id,this. ...
- 【转载】delete table 和 truncate table 的区别
使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where] 将XS表中的所有行数据删除 delete XS 执行完后,发现X ...
- 控制台(Console)报错:java.io.IOException: Broken pipe
控制台(Console)输出: java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcherImpl.write0(Native Meth ...
- jquery常用选择器
1.数字性过滤 $("tr:first") //选择所有tr元素的第一个 $("tr:last") / ...
- [C#]多线程下载
发现电脑里以前编写的下载程序... 做个记录,那时做的挺匆忙的,没用委托,通过公开出窗体来修改下载进度,做的比较乱... ==!! 程序具体功能(流程): 1.检测系统托盘图标内的进程名是否符合要求 ...
- Atitit.木马病毒的免杀原理---sikuli 的使用
Atitit.木马病毒的免杀原理---sikuli 的使用 1. 使用sikuli java api1 1.1. 3. Write code!1 2. 常用api2 2.1. wait 等待某个界面出 ...
- Atitit.病毒木马程序的感染 传播扩散 原理
Atitit.病毒木马程序的感染 传播扩散 原理 1. 从木马的发展史考虑,木马可以分为四代 1 2. 木马有两大类,远程控制 vs 自我复制传播1 3. 自我复制2 3.1. 需要知道当前cpu ...
- Android中方便好用的倒计时类
一.使用api提供的类进行操作 Android提供了CountDownTimer来让我们进行倒计时,可以让我们很方便的进行倒计时的操作.使用方式也很简单,下面直接贴代码就好了: package ...
- 我的android学习经历11
让TextViews实现跑马灯效果 有时候用文本控件时,文本只能在一行显示,而且文本很长的话,后面的文本就会隐藏 一.假如你只需要一个TextView,那个可以添加三个属性实现跑马灯效果,也就是让文字 ...