从以前开始一直在研究内容读取方案,因为我对代码的要求主要有:
简洁(以最少的代码量实现)
高效(SQL读取效率一定要好)
所以经给不少次改进,最后写出的代码大致是这样的:
function faptopic($mode,$val,$tsort,$tid,$qty){
global $pdo;
return $pdo->query('SELECT * FROM `topic` WHERE '.($mode?'`'.$mode.'`='.$val.' AND':'').' `sort` IN ('.$tsort.') AND `tid` '.($qty?'<= '.$tid.' ORDER BY `tid` DESC LIMIT '.$qty:'IN ('.$tid.')'))->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)?:array();
}
引入的几个变量分别是:模式、模式值、分类、基点、数量。
全局调用pdo引擎,执行query函数。
mode:如果设置了该项,则读取指定索引列,否则按主键读取。
val:当启用mode时限定的索引列值,例如age=3中,mode='age',val=3。
tsort:要读取的主题分类,也可以用此进行权限控制。
tid:当存在qty时,读取小于等于此基点的qty个值并倒序输出。不存在qty时,读取此基点内所有值。
qty:读取数量限制以及判断开关。