Home > Article > Backend Development > %t WHERE 1 %i 里面的%t和%i,是如何控制的。
%t WHERE 1 %i 里面的%t和%i,是怎么控制的。。
下面的代码,是怎么实现控制%t和%i输出的结果啊。。?
<br />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) {<br /> $sql = '';<br /> $sql .= $tid ? ' AND '.DB::field('tid', $tid) : '';<br /> $sql .= $authorid ? ' AND '.DB::field('authorid', $authorid) : '';<br /> $sql .= $invisible !== null ? ' AND '.DB::field('invisible', $invisible) : '';<br /> $sql .= $first !== null ? ' AND '.DB::field('first', $first) : '';<br /> $sql .= $fid ? ' AND '.DB::field('fid', $fid) : '';<br /> $sql .= $author ? ' AND '.DB::field('author', $author) : '';<br /> $sql .= $starttime ? ' AND '.DB::field('dateline', $starttime, '>=') : '';<br /> $sql .= $endtime ? ' AND '.DB::field('dateline', $endtime, '<') : '';<br /> $sql .= $useip ? ' AND '.DB::field('useip', $useip, 'like') : '';<br /> if(trim($keywords)) {<br /> $sqlkeywords = $or = '';<br /> foreach(explode(',', str_replace(' ', '', $keywords)) as $keyword) {<br /> $keyword = addslashes($keyword);<br /> $sqlkeywords .= " $or message LIKE '%$keyword%'";<br /> $or = 'OR';<br /> }<br /> $sql .= " AND ($sqlkeywords)";<br /> }<br /> if($sql) {<br /> 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)));<br /> } else {<br /> return array();<br /> }<br /> }<br />