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