结缘PDO

原由 php

一直没有注意看数据库相关知识 html

几个月以前,无心打开以下一段代码: mysql

被人吐槽是N年前的写法。后来也是学习须要,单一mysql已经不合适了。因而上网搜了一下好方法,PDO迎面而来。 sql

诱惑 数据库

上网浏览时,看见了一段话: less

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. ide

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驱动去访问数据库。
PDO提供了一个数据访问抽象层,这就意味着,无论你使用的是哪一种数据库,你均可以用一样的函数去进行查询的获取数据。PDO并不提供数据提取,它不会重写SQL语句,或者模仿这些功能。你须要使用一个成熟的提取层,若是你须要的话。
fetch

它能够不受数据库特定语法限制,让数据库平台切换更无痛,很诱人啊有木有


初见

工欲善其事必先利其器。php5的安装就累述了,下面说一下关于pdophp.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 提供了3中不一样的错误处理策略。

PDO::ERRMODE_SILENT

这是默认使用的模式。PDO会在statementdatabase对象上设定简单的错误代号,你可使用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

1

aaa

2

bbb

 

数据查询

咱们要查询id1的数据

MYSQL版本:

 

PDO版本:

 

诶,貌似没差多少的样子~~

 

数据更新

咱们要更新id1的数据,name值改成ccc

MYSQL版本:

 

PDO版本:

感受这个exec清爽多了

 

删除数据

咱们要删除id1的数据

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

很高兴呐

技术是死的,人是活的。利用旧技术,创造新将来。

本文参考资料:

  1. 为何你应该使用PHP PDO访问数据库
    http://www.360doc.com/content/10/0927/10/2646631_56718095.shtml
  2. PHP5PDO的简单使用

    http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/08/12/1797753.html

  3. PDO::exec

    http://php.net/manual/zh/pdo.exec.php

 

版权全部

相关文章
相关标签/搜索