0

我正在建立一个网站,它将从 mysql 返回结果并将它们显示在网页上。我将数据存储在 mysql 或检索数据并将其显示在网页上没有问题。当数据返回到页面时,我想将它存储在一个表中并运行一个循环,这样对于每条记录,都会有一个像列表编号一样向下递增的数字。任何帮助,将不胜感激。我的代码不断遇到错误:

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

    mysql_select_db("forloops", $con);

    $result = mysql_query("SELECT * FROM userinfo ORDER BY age DESC");

    echo "<table border='1'>
    <tr>
        <th>Position</th>
    <th>Firstname</th>
    <th>Lastname</th>
    <th>Age</th>
    </tr>";
    $counter = 0;
        $position= 0;
    $row = mysql_fetch_array($result);

    if($counter <=10){

            echo "<tr>";
                        echo "<td>" . $position . "</td>";
            echo "<td>" . $row['firstname'] . "</td>";
            echo "<td>" . $row['lastname'] . "</td>";
            echo "<td>" . $row['age'] . "</td>";
            echo "</tr>";
            $counter++;
            }
    echo "</table>";
    mysql_close($con);
    ?> 
4

2 回答 2

0

如果你有一个以上的数据库结果,你应该使用:

 while ($row = mysql_fetch_array($result)) {
 //process one row
}

使用你的方式, $row 总是一样的。其次,如果我没看错,你不会增加 $position 变量。

于 2013-02-08T13:35:14.410 回答
0

您当前代码的问题是您只从查询中获取第一行,看看我是如何在下面写下来的:

echo "<table border='1'>
<tr>
    <th>Position</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>";
$counter = 0;
    $position= 0;

while ($row = mysql_fetch_array($result)) { // This is new code
    if($counter <=10){

        echo "<tr>";
                    echo "<td>" . $position . "</td>";
        echo "<td>" . $row['firstname'] . "</td>";
        echo "<td>" . $row['lastname'] . "</td>";
        echo "<td>" . $row['age'] . "</td>";
        echo "</tr>";
        $counter++;
    }
} // This is new code
echo "</table>";
mysql_close($con);
?> 

<tr>如果您注意到,我已经围绕表格的行和单元格的回声创建了一个循环<td>

while循环将遍历查询返回的每一行。

于 2013-02-08T13:29:57.057 回答