原由 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驱动去访问数据库。 |
它能够不受数据库特定语法限制,让数据库平台切换更无痛,很诱人啊有木有
初见
工欲善其事必先利其器。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 提供了3中不一样的错误处理策略。
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 |
1 |
aaa |
2 |
bbb |
数据查询
咱们要查询id为1的数据
MYSQL版本:
PDO版本:
诶,貌似没差多少的样子~~
数据更新
咱们要更新id为1的数据,name值改成ccc
MYSQL版本:
PDO版本:
感受这个exec清爽多了
删除数据
咱们要删除id为1的数据
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
很高兴呐
技术是死的,人是活的。利用旧技术,创造新将来。
本文参考资料:
版权全部 |