Cevin,叫我小c

司徒楠-一个程序员
posts - 51, comments - 72, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

牢骚一下,关于数据库类的设计

Posted on 2011-01-13 17:50 cevin 阅读(144) 评论(0) 编辑 收藏

看到很多人写的操作类中都有一个类似fetchAll的方法(用于获取全部数据),把数据库的数据全部查询出来。里面的关键无非就是while($row=mysql_fetch_assoc($resource))。然后不断的push到一个数组中过去然后在返回。返回后会有一个变量接收。然后在循环做判断……最近在改dx的代码。感受到了dx的美。dx系统没有写该方法。而是在数据库类的外围对其循环。

 

//dx
$query = DB::query('SELECT uid FROM '.DB::table('common_member').' WHERE state = "xxxx"');
$html = '';
while($row=DB::fetch($query)) {
$html .= 'xxxxxxxxxxxx';
}

 

 

 

然后在模板中直接打印出该段html代码。乍一看很麻烦。实则对整个项目的效率提升了足足N个单位。当然,这仅仅适用于针对性的项目。框架不这么写是因为他不知道你的html是什么,没办法这样做。或者是框架根本没考虑到?

在来说说PDO和MYSQLi。PDO本身就有fetchAll方法,底层的C代码编写的获取数据集合的方法速度会很快的。MySQLi在php5.3.X+版本中,也增加了fetch_all方法。之前版本mysqli没有。

牢骚完毕。