结缘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定义: 过程数据对象,用来传输实时数据.因为 ...
随机推荐
- shared_ptr与weak_ptr的例子
12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob的每个元素. StrBlob.h #ifndef STRBLOB_H #def ...
- 写个 Hello World 而已,要不要这么震撼?!
Atom 编辑器的一个插件,可以让你写代码的时候体验狂拽酷炫的效果! 如果来点音乐.再配上机械键盘的话,写代码是不是爽到爆呢? 这货全名叫: activate-power-mode atom pack ...
- java coding recommand
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
- 一种通用数据采集的schema定义形式
{ "name": "凤凰金融", "notice": { "data": "attribute", ...
- 并发与多版本:update重启动问题
以下演示重启动问题,请注意 before触发器和after触发器的行为区别,因为before触发器会触发两次而导致重启动问题,因此使用after触发器更加高效,应该尽量避免在所有触发器中使用自治事务 ...
- oledb方式读取excel文件
进入博客园后台发现12年11月份写的草稿没发,时隔1年,把它拉出来晒晒太阳. 前言 第一次做Excel文件导入,采用了oledb,不足之处,还请各位大牛指出,谨以此文对导入Excel做个总结. 一般步 ...
- magento flat和eav表连接的不同
对于flat表,也就是普通的表,例如订单之类的sales_flat_order,这类型的连接,Collection连接 $table = Mage::getSingleton('core/resour ...
- Jquery Ajax 调用 WebService
原文:http://www.cnblogs.com/andiki/archive/2010/05/17/1737254.html jquery ajax调用webservice(C#)要注意的几个事项 ...
- Java 十进制转十六进制
1. /** * All possible chars for representing a number as a String */ final static char[] digits = { ...
- UIWebView和UIActivityIndicatorView的结合使用
环境:Xcode6.1 UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等.这篇文件将结合UIActivityIndicatorView控件制作一个 ...