PHP问题...输出在循环后停止

时间:2015-10-30 20:10:03

标签: php

我已经得到了这个代码,不知何故它在第一次进入后停止,即使应该有更多的方式。 如果我把两个foreach循环都取出来,那就好了。所以问题应该存在,但我要么是盲目的,要么是愚蠢的:(

    // Main Agenda
$stmt = $mysqli->prepare("
SELECT 
agenda.id, 
agenda.title, 
agenda.timeStart, 
agenda.timeEnd, 
agenda.description, 
agenda.speakers, 
agenda.moderators, 
agenda_locations.name,
agenda_days.dayDate,
agenda_categories.name
FROM agenda
LEFT JOIN agenda_locations ON agenda.location = agenda_locations.id
LEFT JOIN agenda_days ON agenda.dayDate = agenda_days.id
LEFT JOIN agenda_categories ON agenda.category = agenda_categories.id
WHERE agenda.active = '1'
AND agenda.deleted = '0'
ORDER BY agenda.timeStart ASC
");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($agendaId, $agendaTitle, $agendaStart, $agendaEnd, $agendaDescription, $agendaSpeakers, $agendaModerators, $agendaLocation, $agendaDate, $agendaCategory);

while ($stmt->fetch()) {
    $speakersText = "";
    $moderatorsText = "";

    if( strlen($agendaSpeakers)>0 ){
        foreach(explode('###', $agendaSpeakers) as $speakerId) {
            $stmt = $mysqli->prepare("
            SELECT 
            name
            FROM speakers
            WHERE id = ?
            ");
            $stmt->bind_param('i', $speakerId);  
            $stmt->execute();
            $stmt->store_result();
            $stmt->bind_result($speakerName);
            $stmt->fetch();

            $speakersText .= $speakerName.", ";
        }
        $speakersText = substr_replace($speakersText, "", -2);
    }
    if( strlen($agendaModerators)>0 ){
        foreach(explode('###', $agendaModerators) as $moderatorId) {
            $stmt = $mysqli->prepare("
            SELECT 
            name
            FROM speakers
            WHERE id = ?
            ");
            $stmt->bind_param('i', $moderatorId);  
            $stmt->execute();
            $stmt->store_result();
            $stmt->bind_result($moderatorName);
            $stmt->fetch();

            $moderatorsText .= $moderatorName.", ";
        }
        $moderatorsText = substr_replace($speakersText, "", -2);
    }


    $var0 = $agendaId;
    $var1 = stripslashes($agendaTitle);
    $var2 = strtotime($agendaStart);
    $var3 = strtotime($agendaEnd);
    $var4 = stripslashes($agendaDescription);
    $var5 = $speakersText;
    $var6 = $moderatorsText;
    $var7 = $agendaLocation;
    $var8 = strtotime($agendaDate);
    $var9 = $agendaCategory;
    $agendaMain[] = array ($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9);
}

1 个答案:

答案 0 :(得分:1)

您必须在foreach循环中重命名$stmt变量。