【发布时间】:2012-06-05 18:47:21
【问题描述】:
转到此问题的底部以获得答案
我目前正在制作一个表格输出,它基本上会逐行列出用户。表输出中的列将由一个特定的 SQL 列填充,但来自多行(例如 John Smith 有 4 行,但 X 列在此表的每一行中具有不同的值)。
为了给您更多上下文,这是当前表格状态的文本表示。
Name | Col1 | Col2 | Col3
---------------------------------
Name1 | 0 | X | 1
Name2 | 3 | 2 | <--- Value missing
Name3 | 2 | 1 | <--- Value missing (and this continues through the table..
正如您在该表上看到的那样,第一行填充良好 - 但之后的其余行似乎忽略了数据的迭代(因此其余行仅填充 2 列。
循环的相关代码如下:
while ($row = mysql_fetch_assoc($result)) {
echo "<tr><td>". $row['forename'] . "</td>
<td>". $row['status'] ."</td>";
while ($col = mysql_fetch_assoc($result)) {
if ($col['id'] == $row['id']) {
echo "<td>" . $col['status'] . "</td>";
}
else if ($col['id'] != $row['id']){
echo "</tr>";
break;
}
}
}
有没有人知道为什么会发生这种情况?我希望我已经提供了足够的信息,但如果没有,请告诉我! :)
【问题讨论】:
-
您在
mysql_fetch_assoc()的两个实例中都使用了$result。你不应该在不同的结果集上循环吗? -
所有数据都来自一个查询,尽管该查询已将两个表连接在一起。我要做的就是说:John Smith 有 3 行,而我使用的列的值是 1、2、3。然后下一个用户说:Alan Man 也有 3 行,并且每行也有 3 个不同的值(但相同的列)。我只希望用户名一次,但我希望将该用户的每一行中的 3 个不同值设置为我表中的列值。
-
您确定查询返回的数据正确吗?
-
好吧,当我在 SQL 中运行查询以按原样获取表时,返回的数据是正确的。就在第一行之后,它似乎错过了第一个状态值 - 但之后的其他 2 个与表查询中的相同。
标签: php sql loops nested while-loop