我在这个网站上看到过这个问题,但是我的情况略有不同,我还没有看到答案。我的代码看起来像这样
$sql_broadcast = mysql_query("SELECT id, mem_id, bc, bc_date FROM bc WHERE
mem_id='$id' ORDER BY bc_date DESC LIMIT 50");
while($row = mysql_fetch_array($sql_broadcast)){
$mem_id = $row['mem_id'];
$bc = $row['bc'];
$bc_date = $row['bc_date'];
$bc_date = strftime("%b %d, %Y", strtotime($row['bc_date']));
$bc_display = '<table width="90%" align="center" cellpadding="4">
<tr>
<td width="93%">' .$bc_date. '<br />' .$bc. '</td>
</tr>
</table>';
}
?>
如果我只是回显或打印表格,那么循环就可以完美地运行。但是,我希望能够在html页面中打印$ bc_display,当我这样做时,只检索到一个结果。我很难过,我已经研究了所有建议的线程,我仍然难倒。谢谢你的帮助!
答案 0 :(得分:2)
您必须使用连接$ bc_display字符串。=
像这样:
$bc_display = '';
$sql_broadcast = mysql_query("SELECT id, mem_id, bc, bc_date FROM bc WHERE
mem_id='$id' ORDER BY bc_date DESC LIMIT 50");
while($row = mysql_fetch_array($sql_broadcast)){
$mem_id = $row['mem_id'];
$bc = $row['bc'];
$bc_date = $row['bc_date'];
$bc_date = strftime("%b %d, %Y", strtotime($row['bc_date']));
$bc_display .= '<table width="90%" align="center" cellpadding="4">
<tr>
<td width="93%">' .$bc_date. '<br />' .$bc. '</td>
</tr>
</table>';
}
?>
答案 1 :(得分:1)
您在每次迭代时覆盖$bc_display
(删除先前存储的结果/行),您必须执行以下操作:
$bc_display .= '<table width="90%" align="center" cellpadding="4">
<tr>
<td width="93%">' .$bc_date. '<br />' .$bc. '</td>
</tr>
</table>';
确保首先将$ bc_display设置为“nothing”(代码的第一行为$bc_display = '';
)。 *此外,你正在创建很多表,也许这是一个更好的选择(虽然不是你问的):
$bc_display = '<table width="90%" align="center" cellpadding="4">';
// your query;
while($row = mysql_fetch_array($sql_broadcast))
{
// First 5 lines of your while loop;
$bc_display .= '<tr><td width="93%">' .$bc_date. '<br />' .$bc. '</td></tr>';
}
$bc_display .= '</table>';
这将只创建一个表,多行 而不是 多个表 一个行即可。这是更好的标记语言,但不是必需的。