PHP问题。。。循环后输出停止

PHP问题。。。循环后输出停止,php,Php,我得到了这个代码,在第一次输入后它就停止了,尽管应该还有更多。 如果我把两个foreach循环都取出来,效果会很好。所以问题应该存在,但我不是瞎就是笨:( 你必须在foreach循环中重命名$stmt变量。我想我一小时前看到有人问过这个问题……你真的不应该在数据库字段中存储一个由###字符串分隔的ID列表。使用规范化的表设计(在你的例子中还有几个表将所有内容链接在一起),您可以在1或2个查询中获得所需的信息,而不是在循环中运行查询。嘿,我为什么不这样做呢?这是一个最多存储5个ID的字段…它使搜索

我得到了这个代码,在第一次输入后它就停止了,尽管应该还有更多。 如果我把两个foreach循环都取出来,效果会很好。所以问题应该存在,但我不是瞎就是笨:(


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

我想我一小时前看到有人问过这个问题……你真的不应该在数据库字段中存储一个由
###
字符串分隔的ID列表。使用规范化的表设计(在你的例子中还有几个表将所有内容链接在一起),您可以在1或2个查询中获得所需的信息,而不是在循环中运行查询。嘿,我为什么不这样做呢?这是一个最多存储5个ID的字段…它使搜索特定信息变得几乎不可能,并且您运行的数据库查询比需要的多得多。@ficuscr-它的事件不太接近同样的问题。所以最好在投票前阅读。@jQuery那么请接受我的答案。必须等待5分钟才能这样做哈哈;-)
    // 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);
}