Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何遍历表中的行_Php_Mysql - Fatal编程技术网

Php 如何遍历表中的行

Php 如何遍历表中的行,php,mysql,Php,Mysql,我有一个名为members的表,有3行。以下代码尝试显示members表中的所有行。它将第一条记录显示3次,而不是每个记录显示一次 <?php $con = new mysqli("localhost", "root", "jce123", "profile"); if (mysqli_connect_errno()) { printf("Connection failed: %s\n", mysqli_connect_error()); exit(); } $sq

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

<?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>";
        }
$sql=“从成员中选择*”;
$res=mysqli\u查询($con,$sql);
$num=mysqli\u num\u行($res);
$array=mysqli\u fetch\u assoc($res);
while($row=mysqli\u fetch\u assoc($res)){
foreach($key=>$value的数组){
回声“;
回显“$key.”:“$value.”;
回声“;
}
回声“

”; }
任何基础教程都会告诉你这一点。甚至连数据库也提供了一个例子。

其中有
$array=mysqli\u fetch\u assoc($res),您将只收到数据库中的一行。你需要像这样的东西:

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

// processing for each row

}

这是因为,您的$num=3,count($array)=3,外部for循环与内部for循环没有关系。

您可以使用

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

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

试试这个。。。这种代码的平静不是经过测试的,只是为了给你一个想法

$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>";
    }
$sql=“从成员中选择*”;
$res=mysqli\u查询($con,$sql);
$num=mysqli\u num\u行($res);
while($row=mysqli\u fetch\u assoc($res)){
回声“;
echo'id=“”.$row['id'].'”:
name=“.”.$row['name']”;
回声“;
}

为什么不使用foreach在$array变量上迭代一次,而不是嵌套for循环呢?此外,应该不鼓励使用mysql和mysqli函数,而是使用PDOI foreach($array as$key=>$value)它简化了很多事情,但我仍然输出了3次第一条记录。我想学习OOP方法,但今天上午需要完成。@JasonFingar:MySQLi(相对而言)很好,因为它修复了ext/mysql留下的巨大的安全性和功能漏洞。我个人更喜欢PDO,但没有真正重要的理由去移动。我理解这一点,但仍然不知道如何处理表中的行。我确信一定有某种构造将表表示为记录数组/rowsThanks,以供尝试给我两次第一行。您仍然在循环中引用$array,这只是一行。请在$row上迭代:
foreach($key=>$value){
我再次查看了这一点,并将代码更改为:while($row=mysqli_fetch_assoc($res)){foreach($key=>$value){echo”“;echo”“$key”“:“$value。”“回声”;}现在剩下的唯一问题是如何让第一条记录显示你的循环中有标记,因此你有效地为每一行创建了一个表。你应该用and环绕你的循环。是的,它会为每条记录创建一个新表,并在外部循环中的表之间创建两个空格,这很好。在你的帮助下,一切都会好起来现在,除了第一条记录,第二条和第三条记录没有被写入。