如何遍历表中的行

时间:2012-11-15 17:58:43

标签: php mysql

我有一个名为members 3行的表。以下代码尝试显示members表中的所有行。它显示1次1记录,而不是显示每个记录一次。

<?php
$con = new mysqli("localhost", "root", "jce123", "profile");
if (mysqli_connect_errno()) {
    printf("Connection failed: %s\n", mysqli_connect_error());
    exit();
}
    $sql = "SELECT * FROM members";
    $res = mysqli_query($con,$sql);
    $num = mysqli_num_rows($res);
    $array = mysqli_fetch_assoc($res);
    $keysarray = array_keys($array);
    $valuearray = array_values($array);
    for ($i=0; $i < $num; $i++) {
        for($j = 0; $j < count($array); $j++) {
            echo "<table>";
            echo "<tr><td>".$keysarray[$j].": </td><td>".$valuearray[$j]."</td></tr>";
            echo "</table>";
            }
            echo "<br><br>";
        }
    mysqli_close($con);
?>

我已根据建议对此进行了更新:

$sql = "SELECT * FROM members";
    $res = mysqli_query($con,$sql);
    $num = mysqli_num_rows($res);
    $array = mysqli_fetch_assoc($res);
    while ($row = mysqli_fetch_assoc($res)) {
        foreach($array as $key => $value){
            echo "<table>";
            echo "<tr><td>".$key.": </td><td>".$value."</td></tr>";
            echo "</table>";
            }
        echo "<br><br>";
        }

5 个答案:

答案 0 :(得分:1)

那是因为,$ num = 3,count($ array)= 3且外部for循环对内循环没有影响。

答案 1 :(得分:0)

任何基础教程都会告诉你这个。甚至PHP docs也提供了一个例子。

答案 2 :(得分:0)

如果您拥有$array = mysqli_fetch_assoc($res);,则只会从数据库中收到一行。你需要这样的东西:

while ($row=mysqli_fetch_assoc($res)) 
{

// processing for each row

}

答案 3 :(得分:0)

你可以使用这样的东西..

while ($row=mysqli_fetch_assoc($res)) 
{

    // processing for each row
    e.g
    echo $row['id'];
    echo $row['name'];
    etc
  }

答案 4 :(得分:0)

试试这个...代码的和平没有经过测试,只是为了给你一个想法......

$sql = "SELECT * FROM members";
    $res = mysqli_query($con,$sql);
    $num = mysqli_num_rows($res);
    while ($row = mysqli_fetch_assoc($res)) {
            echo "<table>";
            echo '<tr><td> id = "'.$row['id'].'": 
                  </td><td> name = "'.$row['name'].'"</td></tr>";
            echo "</table>";
    }