结缘PDO
起因
一直没有注意看数据库相关知识
几个月之前,无意打开如下一段代码:

被人吐槽是N年前的写法。后来也是学习需要,单一mysql已经不合适了。于是上网搜了一下好方法,PDO迎面而来。
诱惑
上网浏览时,看见了一段话:
|
The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. Each database driver that implements the PDO interface can expose database-specific features as regular extension functions. Note that you cannot perform any database functions using the PDO extension by itself; you must use a database-specific PDO driver to access a database server. PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility. |
给出网友的翻译:
|
PDO扩展为PHP定义了一个访问数据库的轻量的,持久的接口。实现了PDO接口的每一种数据库驱动都能以正则扩展的形式把他们各自的特色表现出来。注意;利用PDO扩展本身并不能实现任何数据库函数。你必须使用一个特定的数据库PDO驱动去访问数据库。 |
它可以不受数据库特定语法限制,让数据库平台切换更无痛,很诱人啊有木有

初见
工欲善其事必先利其器。php5的安装就累述了,下面说一下关于pdo的php.ini的配置
首先,你需要知道:
在php.ini里面,分号表示注释,去掉前面的分号就代表该功能可以用
Ok,现在打开php.ini(可以用记事本打开)
在文件里,找到以下行
|
extension=php_pdo.dll extension=php_pdo_firebird.dll extension=php_pdo_informix.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll extension=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll |
把前面的分号去掉(我这里已经去掉)就可以了。
在配置php.ini到时候要小心,修改前先备份。我曾经改错一次,使得php无法工作,还愣是不知道哪里有问题。。
这样子,pdo就安装完毕了
把玩
第一件事当然是想看看怎么连接数据库啦
它有一个PDO类,说是创建一个新的pdo对象,应该是这个了
看看语法,第一个语句出来啦~\(≧▽≦)/~

在里面,mysql就是数据库类型,localost是主机名,test是数据库名,dbuser是用户名,dbpass是密码
请注意try/catch代码块,你应该始终将您 PDO 的操作封装在一个 try/catch 代码块内并使用异常机制
下面有一个网友的语句图,把我的集合成一句话

下面是错误处理
中不同的错误处理策略。
|
PDO::ERRMODE_SILENT 这是默认使用的模式。PDO会在statement和database对象上设定简单的错误代号,你可以使用PDO->errorCode() 和 PDO->errorInfo() 方法检查错误;如果错误是在对statement对象进行调用时导致的,你就可以在那个对象上使用 PDOStatement->errorCode() 或 PDOStatement->errorInfo() 方法取得错误信息。而如果错误是在对database对象调用时导致的,你就应该在这个database对象上调用那两个方法。 PDO::ERRMODE_WARNING 作为设置错误代号的附加,PDO将会发出一个传统的E_WARNING信息。这种设置在除错和调试时是很有用的,如果你只是想看看发生了什么问题而不想中断程序的流程的话。 PDO::ERRMODE_EXCEPTION 作为设置错误代号的附件,PDO会抛出一个PDOException异常并设置它的属性来反映错误代号和错误信息。这中设置在除错时也是很有用的,因为他会有效的"放大(blow up)"脚本中的出错点,非常快速的指向一个你代码中可能出错区域。(记住:如果异常导致脚本中断,事务处理回自动回滚。) 异常模式也是非常有用的,因为你可以使用比以前那种使用传统的PHP风格的错误处理结构更清晰的结构处理错误,比使用安静模式使用更少的代码及嵌套,也能够更加明确地检查每个数据库访问的返回值。 |
回到上面的代码,如果发生了错误,一个PDOException异常对象将被抛出,然后catch会捕捉到,然后按照开发者设定的内容进一步处理。
连接就玩到这里。。
进击
连接之后该干什么了呢?没错,处理数据,要不数据库干嘛用的。下面所有将给出两个版本:
假设有个表zjyz
|
id |
name |
|
aaa |
|
|
bbb |
数据查询
的数据
MYSQL版本:

PDO版本:

诶,貌似没差多少的样子~~
数据更新
的数据,name值改为ccc
MYSQL版本:

PDO版本:

感觉这个exec清爽多了
删除数据
的数据
MYSQL版本:

PDO版本:

呵呵,还是exec返回行数
插入数据
我们要插入数据 id = 3 ,name = ccc
MYSQL版本:

PDO版本:

好玩的exec()
上面出现了很多次这个函数,现在简单介绍一下
PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数。
PDO::exec() 不会从一条 SELECT 语句中返回结果。对于在程序中只需要发出一次的 SELECT 语句,可以考虑使用 PDO::query()。对于需要发出多次的语句,可用 PDO::prepare() 来准备一个 PDOStatement 对象并用 PDOStatement::execute() 发出语句。
总结
虽然这个技术有点老了,但是相对于陈旧的语句,依然活力四射。随着学习的深入,楼楼还学到了很多本文没提到的东西。谢谢各位大神啦~\(≧▽≦)/~

这些等等很多。。。所有涉及数据库的操作也基本换成了PDO
很高兴呐
技术是死的,人是活的。利用旧技术,创造新未来。
|
本文参考资料:
版权所有 |

结缘PDO的更多相关文章
- 比Mysqli操作数据库更简便的方式 。PDO
下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...
- pdo的使用
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. PDO随 ...
- PHP中PDO事务的使用方法
事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...
- PDO连接mysql数据库
1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...
- PDO概念 分析 练习
PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...
- PDO
'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...
- 前端学PHP之PDO预处理语句
× 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...
- 前端学PHP之PDO基础操作
× 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...
- CANopen学习——PDO
查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html PDO定义: 过程数据对象,用来传输实时数据.因为 ...
随机推荐
- CSS3超酷移动手机滑动隐藏側边栏菜单特效
这是一组共4种效果很炫酷的CSS3移动手机滑动隐藏側边栏菜单特效. 这四种效果各自是:默认的点击滑动側边栏菜单效果.带3D transforms的滑动側边栏效果.文字缩放和淡入淡出效果的滑动側边栏以及 ...
- Executing System commands in Java---ref
One of the nice features of Java language is that it provides you the opportunity to execute native ...
- iOS 并行编程:NSOperation Queues
1 简介 1.1 功能 Operation Queue也是IOS的一种并行编程技术,类似Dispatch Queue可以帮助用户管理多线程.但是Operation Queue将任务封装在 ...
- sbit命令行中运行scala脚本
一般sbit编译器采成了scala运行工具.启动sbit命令行,输入console,命令行自动切换到scala编辑器面. scala>:paste 然后手动将XXX.scala中的代码拷贝到界面 ...
- JavaScript入门(4)
一.JS能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登录验证等) 什么是变量?http://www.cnblogs.c ...
- java strtus2 DynamicMethodInvocation配置(二)
前面一章讲了下动态配置的方法.那样,能够直接动态的调用action里面的方法, 这里展示一种配置更少,更简洁的一种方法. 在前一章其他不变的情况下,改变配置文件 <package name=&q ...
- uploadify上传控件使用
uploadify是JQuery的一个上传插件,实现的效果非常不错,并且带进度显示,我将给大家演示如何使用uploadify进行图片上传, 1.点我下载http://www.uploadify.com ...
- SQL Server游标+延迟执行简介
在项目测试中,我们可能会使用批量生成数据来测试程序的性能. 这里讲一个我遇到的问题,由于我们批量生成数据时基本上是瞬间完成,所以GETDATE()函数获得的时间基本上也是一样的,而我们又要求生成每条数 ...
- 如何搭建javaweb 开发环境
一.准备工作: (1) 环境要求: 1.java jdk 2.eclipse--j2ee版 3.tomcat 4.mysql 5.HeidiSQL_7.0 (2)搭建步骤: 1.安装JDK,配置环境变 ...
- cmd命令积累
dir:展示所有目录 cd fileName:进入下一个目录 cd .. :返回上一层目录 cd\:返回根目录