Первый результат Mysqli fetch_assoc

У меня есть запрос fetch_assoc, который захватит 14 строк, но я хочу, чтобы результат FIRST отображался так, что он отличается от других, тогда остальные просто обычные.

$site_events = $db->query("SELECT * FROM site_events ORDER BY time ASC limit 14"); while($events = $site_events->fetch_assoc()) { if( first result???? ) { //this is where im stuck echo $events['title'], 'FIRST RESULT'; } //then display others like a normal list.. echo $events['title'], '<br />'; } 

Вы можете получить первую строку за пределами «while», а затем продолжить в обычном режиме. Но сначала вы должны, вероятно, проверить, выбраны ли данные на всякий случай:

 $site_events = $db->query("SELECT * FROM site_events ORDER BY time ASC limit 14"); if($db->field_count){ $event = $site_events->fetch_assoc(); echo $event['title'], 'FIRST RESULT'; while($events = $site_events->fetch_assoc()) { //then display others like a normal list.. echo $events['title'], '<br />'; } } 

Я основывался на ответе Ятина Триведи, но удалял приращение переменной, которую я не установил. Вы не заметите разницы, но это немного быстрее. Это связано с тем, что $i++ не нужно называть каждой итерацией. Кроме того, unset() работает очень быстро. Изменить: этот ответ начался с $i=0 и $i++ , теперь он больше не работает 🙂

 $hasNotLooped = true; // set it before you run the loop $site_events = $db->query("SELECT * FROM site_events ORDER BY time ASC limit 14"); while($events = $site_events->fetch_assoc()) { if( $hasNotLooped ) { echo $events['title'], 'FIRST RESULT'; unset($hasNotLooped); } //then display others like a normal list.. echo $events['title'], '<br />'; } с $hasNotLooped = true; // set it before you run the loop $site_events = $db->query("SELECT * FROM site_events ORDER BY time ASC limit 14"); while($events = $site_events->fetch_assoc()) { if( $hasNotLooped ) { echo $events['title'], 'FIRST RESULT'; unset($hasNotLooped); } //then display others like a normal list.. echo $events['title'], '<br />'; } 
 $tmp=true; $site_events = $db->query("SELECT * FROM site_events ORDER BY time ASC limit 14"); while($events = $site_events->fetch_assoc()) { if( $tmp) { //this is where im stuck echo $events['title'], 'FIRST RESULT'; $tmp=false; } else { //then display others like a normal list.. echo $events['title'], '<br />'; } }