2013-11-27 3 views
0

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

$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 />'; 
    } 
+0

вы всегда можете использовать * переменную * для сохранения состояния –

ответ

1

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

$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 />'; 
    } 
} 
+2

Это сделало то, что я хотел, спасибо. – Jayden

0
$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 />'; 
    } 
} 
+0

Booleans являются быстрее, чем целые. Просто говорю. – h2ooooooo

+1

вы можете улучшить скорость, добавив $ tmp ++ в оператор if ... (микроскопическая разница :)) – SpiderLinked

+0

Можно ли сделать так, чтобы первые результаты inst дублировались снова? Потому что его дублирование и эхо, как и нормальное. – Jayden

2

Я основан на шахте ответ Yatin Trivedi, но удаляется приращение с переменной, которую я неустановленной. Вы не заметите разницы, но это немного быстрее. Это потому, что $i++ не нужно называть каждой итерацией. Кроме того, unset() действительно быстрый. Edit: Этот ответ начал с $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 />'; 
} 
+0

Почему не просто 'if ($ hasNotLooped) $ hasNotLooped = false;'? – h2ooooooo

+0

Не имеет значения, я думаю ... В любом случае есть преимущества. Вы могли бы сказать, что я просто удалил некоторую информацию из памяти. – Martijn

+0

Можно ли сделать так, чтобы первые результаты inst дублировались снова? Потому что его дублирование и эхо, как и нормальное. – Jayden

Смежные вопросы