无法迭代选定的行

时间:2015-06-03 19:18:53

标签: php mysql

代码应该在每个循环中获取一行并为每个数据块构建td元素。但是,即使选择了所有行,它也会在丢失其他行的情况下获得一些行:

$query = "select * from category";
$ret = mysql_query($query, $conn);
while ($rows = mysql_fetch_assoc($ret)) {
  echo "<tr>";
  foreach ($rows as $val) {
    echo "<td>{$val}</td>";
  }
}

2 个答案:

答案 0 :(得分:0)

mysql_fetch_assoc返回一个关联数组。要显示每个返回的行,请执行以下操作(直接从php.net页面获取mysql_fetch_assoc

while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];

}

答案 1 :(得分:0)

尝试删除大括号,如下所示:

echo "<td>$val</td>";

除了你没有关闭<tr>标签。所以你应该这样做:

$query = "select * from category";
$ret = mysql_query($query, $conn);
while ($rows = mysql_fetch_assoc($ret)) {
  echo "<tr>";
  foreach ($rows as $val) {
    echo "<td>$val</td>";
  }
  echo"</tr>";
}

现在像杰克·奥尔布赖特所说,你应该考虑你桌子的各个列来显示特定的数据。在那之后while()已经看了,我认为你不需要在里面添加任何foreach()。所以你的最终代码应该是这样的:

$query = "select * from category";
$ret = mysql_query($query, $conn);
while ($rows = mysql_fetch_assoc($ret)) {
  echo "<tr>";
    echo "<td>$rows['columnName']</td>";
   echo "</tr>";
}