这样的事情应该做:
function searchTags($tags) {
$tags = explode(' ', $tags);
$tagIds = array();
foreach($tags as $key) {
$sql = mysql_query("SELECT `id` FROM `search_tags` WHERE `tag` = '".$key."'");
while($r=mysql_fetch_object($sql))
$tagIds[] = $r->id;
}
$query = mysql_query("SELECT comms_briefings.*, COUNT(*) AS num
FROM comms_briefings, briefings_tags
WHERE briefings_tags.tag_id IN ('" . implode("','", $tagIds) ."') AND briefings_tags.briefing_id = comms_briefings.id
GROUP BY comms_briefines.id
ORDER BY num DESC, `created` DESC");
while($r = mysql_fetch_object($query)) {
$summation = preg_replace('^(.*)\n(.*)^', '$1\\n$2', $r->summation);
$summation = preg_replace('/[\r]+/', '', $summation);
echo '<li class="message unread" id="msg-'.$r->id.'">';
echo '<h3><a href="">'.$r->title.'</a></h3>';
echo '<ul class="details">
<li><span>Importance:</span> '.$r->importance.'</li>
<li><span>Date:</span> '.$r->created.'</li>
<li><span>Summary:</span> '.$summation.'</li>
</ul>
<div class="clr"></div>
</li>';
}
}
首先将所有 tagId 拉入一个数组,然后对简报进行一次查询,按 id 分组。