【发布时间】:2012-04-15 05:11:31
【问题描述】:
我在将查询放入要在 php/mysql 设置中显示的 html 表中时遇到了一个奇怪的问题。查询总是会产生比显示的结果多一个的结果。例如,如果返回一组结果,则表中不会显示任何内容。如果有 5 个,则仅显示 4 个。我已经使用预定义的函数尝试了相同的查询来生成基于查询的表,并且它生成了具有正确数量结果的正确表。这是一个示例(对缩进或缺少缩进表示歉意):
$user_id = implode($_SESSION['user_id']);
$query = "SELECT name, address
FROM user
WHERE user_id = '$user_id'
ORDER BY date_added DESC";
$result = mysql_query($query) or die ("query failed: " . mysql_error());
echo "<table border='1' style=\"border-collapse: collapse;\">
<tr style=\"background-color: #000066; color: #FFFFFF;\">
<th>Name</th>
<th>Address</th>
</tr>";
$rowCt = 0; // Row counter
while($row = mysql_fetch_array($result))
{
if($rowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
else $Style = "background-color: #0099CC;";
echo "<tr style=\"$Style\">";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "</tr>";
}
echo "</table>";
知道为什么会这样吗?任何帮助将不胜感激,这让我发疯了,需要弄清楚才能继续前进!谢谢。
编辑
我已经稍微改变了它以循环遍历行数,因为该数字是正确的,并且表格现在是正确的大小,但是最后一个结果总是空的。有什么想法吗?
$rowCt = 0; // Row counter
$i = 0;
echo mysql_num_rows($result). ' number of rows';
$num = mysql_num_rows($result);
//while($row = mysql_fetch_array($result))
while ($i < $num)
{
$row = mysql_fetch_array($result);
if($rowCt++ % 2 == 0) $Style = "background-color: #00CCCC;";
else $Style = "background-color: #0099CC;";
echo "<tr style=\"$Style\">";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "</tr>";
$i++;
}
echo "</table>";
谢谢
【问题讨论】:
-
echo mysql_num_rows($result);并确保它返回您期望的行数
-
你想用 'implode($_SESSION['user_id'])' 做什么?
-
我认为您的代码没有任何问题。只有在你的时候,你有一个 if 和 else,试着把它们注释掉,看看会发生什么,它可能会做一些意想不到的事情。另外我建议直接在 phpmyadmin(如果已安装)中执行 $query 并查看返回的数据集以确认返回的数据。
-
我试过回显行数,在这个例子中它会回显2但只显示一个结果集,很奇怪。 implode 语句是检索用户 id 以完成查询。我也尝试删除 if/else 无济于事,以及在 phpmyadmin 中执行查询,它返回相同的数字(比显示的多一个)。有任何想法吗?感谢您的回复