我有两张桌子:
奖项:
awardsid,
forumid
论坛:
forumid,
title
当我进行查询以获得所有论坛的论坛数量时,查询不会返回所有行。如果数据库包含4行,则只返回3.结果总是比预期的行少1行。
$forumdata = $db->query_read(" SELECT COUNT(awards.forumid) AS awardscount,forum.title,awards.forumid
FROM " . TABLE_PREFIX . " awards AS awards
INNER JOIN " . TABLE_PREFIX . " forum AS forum ON (forum.forumid = awards.forumid)
GROUP BY awards.forumid ");
if($db->fetch_array($forumdata))
{
while ($awards = $db->fetch_array($forumdata))
{
$title .= $awards['title'];
$awardscount .= $awards['awardscount'];
echo $title.':'.$awardscount.'<br />';
}
}
else
{
echo "No Data";
}
答案 0 :(得分:0)
改变你的:
while ($awards = $db->fetch_array($forumdata))
{
$title .= $awards['title'];
$awardscount .= $awards['awardscount'];
echo $title.':'.$awardscount.'<br />';
}
到
do
{
$title .= $awards['title'];
$awardscount .= $awards['awardscount'];
echo $title.':'.$awardscount.'<br />';
}
while ($awards = $db->fetch_array($forumdata));
在处理
之前,您正在阅读它两次答案 1 :(得分:0)
您在if
子句中获取第一行,因此在echo
从2到n的行中echo isset($title) ? '' : 'No data';
。我不知道你是如何实现你的类来访问mysql的,所以你可以使用这样的东西:
while
在if/else
循环之后,您当然应该按照现在呈现的方式删除{{1}}条款。