设为首页 收藏本站
查看: 378|回复: 0

[经验分享] 我们为什么要使用PDO进行PHP程序开发?

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-4-7 09:22:28 | 显示全部楼层 |阅读模式

  PDO扩展为PHP定义了一个访问数据库的轻量的,持久的接口。实现了PDO接口的每一种数据库驱动都能以正则扩展的形式把他们各自的特色表现出来。注意;利用PDO扩展本身并不能实现任何数据库函数。你必须使用一个特定的数据库PDO驱动去访问数据库。   
PDO提供了一个数据访问抽象层,这就意味着,不管你使用的是哪种数据库,你都可以用同样的函数去进行查询的获取数据。PDO并不提供数据提取,它不会重写SQL语句,或者模仿这些功能。你需要使用一个成熟的提取层,如果你需要的话。怎么样,是不是看了译文就有一种恍然大悟的感觉了?   
没有?   
那说的再详细点。   
我们为什么要使用PDO?   
1、更换数据库时取得极大便利   
在PHP4/3时代,PHP要利用php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite,这其实也没什么。也就是在配置时多添句话就行了。   
可怕的是,这些扩展和各自对应的数据库打交道时,他们各自的函数有很多是不一样的。   
比如:   
PHP利用libmysql.dll和MYSQL打交道时,如果要从数据表中提取数据作为关联数组,用的是mysql_fetch_accoc,而如果要从postgre数据库取得同样的结果,你就不得不用pg_fetch_assoc。   
很简单的例子说明了很重要的问题,假如你要更换数据库类型,比如从MYSQL更换成POSTGRE,你就不得把你所有和数据库有关的程序都改一遍。这时候,你应该会明白,为什么我不用PDO??   
2、极大提高程序运行效率   
针对上面的情况,也许你会说,我可以使用ADODB(LITE),PEAR::db来实现对不同类型数据库函数的封装啊。这样子,即使我更换数据库,也不需要修改程序。   
答:php代码的效率怎么能够和直接用C/C++写的扩展效率比较呢?根本不是一个数量级的。   
OK,从现在开始用PDO进行你的开发吧。
  <?php <br />$hostname = "localhost"; //指定主机名   
$database = "db_book"; //指定数据库名称   
$usernmae = "root"; //指定用户名   
$password = "44444"; //指定密码   
$dsn = "mysql:dbname=" . $database . ";host=" . $hostname;   
//数据源描述   
try {   
$conn = new PDO($dsn,$usernmae,$password);
//创建PDO对象 参数 : 数据源,用户名,密码   
}   
catch (PDOException $e) {   
echo "Connecting failed: " . $e->getMessage();   
//抛出异常   
}   
$sql = "select * from tb_books";   
//查询字符串   
echo "

"; //使用文本格式输出   
$conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); //使用小写键名 UPPER就是大写   
$rs = $conn->prepare($sql);   
//这个函数我理解应该是个用来建立类似持久连接的函数吧   
$rs->execute();
//这是一个可以带参数的函数,可使用变量替换查询时语句的特定标识   
//如果不带参数则直接执行语句   
//可以提高查询效率 具体看参考手册的介绍 PDO Functions 章节   
while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {   
//FETCH_ASSOC 是限定返回的结果只有 关联字段名 否则会同时返回 字段序号和关联字段名   
//浪费资源,使用关联字段名易于操作,同 mysql_fetch_assoc   
print_r($row);   
};   
echo "";   
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-361308-1-1.html 上篇帖子: PHP链接ACCESS数据库最简单的方法 下篇帖子: php下MongoDB扩展的安装和简单测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表