%t where 1 %i 里面的%t和%i,是怎么控制的。。
下面的代码,是怎么实现控制%t和%i输出的结果啊。。?
public function fetch_all_by_search($tableid, $tid = null, $keywords = null, $invisible = null, $fid = null, $authorid = null, $author = null, $starttime = null, $endtime = null, $useip = null, $first = null, $start = null, $limit = null) {
$sql = '';
$sql .= $tid ? ' and '.db::field('tid', $tid) : '';
$sql .= $authorid ? ' and '.db::field('authorid', $authorid) : '';
$sql .= $invisible !== null ? ' and '.db::field('invisible', $invisible) : '';
$sql .= $first !== null ? ' and '.db::field('first', $first) : '';
$sql .= $fid ? ' and '.db::field('fid', $fid) : '';
$sql .= $author ? ' and '.db::field('author', $author) : '';
$sql .= $starttime ? ' and '.db::field('dateline', $starttime, '>=') : '';
$sql .= $endtime ? ' and '.db::field('dateline', $endtime, '<') : '';
$sql .= $useip ? ' and '.db::field('useip', $useip, 'like') : '';
if(trim($keywords)) {
$sqlkeywords = $or = '';
foreach(explode(',', str_replace(' ', '', $keywords)) as $keyword) {
$keyword = addslashes($keyword);
$sqlkeywords .= $or message like '%$keyword%';
$or = 'or';
}
$sql .= and ($sqlkeywords);
}
if($sql) {
return db::fetch_all('select * from %t where 1 %i order by dateline desc %i', array(self::get_tablename($tableid), $sql, db::limit($start, $limit)));
} else {
return array();
}
}
------解决思路----------------------
那你看看 db::fetch_all 的定义