事实上
php对数据库支撑并不好,最重要的一点就是抽象度不够,访问接口不统一。
why
php针对每种数据库都有一个独立的模块、一组独立的函数。这样的结构和设计让php兼容多种数据库变得困难。
一旦要将一个应用移到另外一个数据库环境中,或添加新的数据库,就需要重新编写和数据库相关的操作。
so
pdo出现了。它是一个抽象的数据模型(一个抽象接口层),提供一个通用接口访问多种数据库。
now
php连接数据库有三种选择
mysql 系列函数:原生函数 过程式风格mysqli 系列函数:扩展,mysql系列函数的增强版,提供过程式和面向对象两种的风格的api,新增预编译和参数绑定等新的特性pdo:扩展,从语法上更接近mysqli(5.1及以上支持)
tips
pdo扩展只是一个抽象的接口层,利用pdo扩展本身并不能实现任何数据库操作,必须使用一个特定的数据库pdo驱动访问数据库。
pdo效率问题
既然pdo有如此多的特性,那么应不应该马上使用pdo呢?
[以下结论是基于5.3 测试过程省略]
首先要考虑效率问题
如果项目对运行效率要求严格,则应该使用mysql 或mysqli负载方面
根据众多使用者测试,pdo开启长连接后负载高于mysql直连且比较稳定,另有使用者测试,pdo连接mysql、oracle 速度比直连有优势。应用会迁移到其他数据库吗?
实际应用中,90%的应用是不会进行数据库迁移的,必要性不大。
综上所述,即使在oracle中,预编译和参数绑定也不一定能提速,反而有可能会因为执行计划被改变造成效率低下。有些数据库预编译反而会造成效率低下。推荐在新应用中尝试使用pdo,旧应用没必要重构。
[本文观点摘自某书籍]
‘).addclass(‘pre-numbering’).hide();
$(this).addclass(‘has-numbering’).parent().append($numbering);
for (i = 1; i