php&sql:fetch\u assoc/while循环在显示数据时无限大

ggazkfy8  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(265)

我正在尝试连接到我的数据库(它正在工作),我想选择表“users”中的所有数据。当我显示数据时,在 fetch_assoc() 永远不会结束。我不明白为什么会这样。
有什么想法吗?

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>My first project!</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>

<?php
    $servername = "localhost";
    $user = "root";
    $password = "";
    $db = "mydb";

    $connection = new mysqli($servername, $user, $password, $db);

    if($connection->connect_error) {
        die("Es ist ein Fehler aufgetreten: $connection->connect_error");
    }

    $sql = "SELECT * FROM users";
    $result = $connection->query($sql);
    $resultArray = $result->fetch_assoc();

    if($result->num_rows > 0) {
        while($i = $resultArray) {
            echo "ID: " . $i["id"] . "<br>Name: " . $i["username"];
        }
    } 
?>
</body>
</html>

如果我尝试这个版本,它是有效的-所以我不明白为什么“我的版本”不是。我只是想适应一下。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>My first project!</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>

<?php
    $servername = "localhost";
    $user = "root";
    $password = "";
    $db = "mydb";

    $connection = new mysqli($servername, $user, $password, $db);

    if($connection->connect_error) {
        die("Es ist ein Fehler aufgetreten: $connection->connect_error");
    }

    $sql = "SELECT * FROM users";
    $result = $connection->query($sql);

    if($result->num_rows > 0) {
        while($i = $result->fetch_assoc()) {
            echo "ID: " . $i["id"] . "<br>Name: " . $i["username"];
        }
    }
?>
</body>
</html>
agxfikkp

agxfikkp1#

在您的版本中,您只从数据库中获取了一行。在第二个代码段中,循环的每次迭代都会从数据库中获取另一行,直到游标用完并 NULL 已返回。

h9a6wy2h

h9a6wy2h2#

这里就是你造成无限循环的地方:

while($i = $resultArray) {

这将导致代码简单地读取 $resultArray 进入 $i (返回的第一行数据) fetch_assoc )一遍又一遍。 $resultArray 永不改变也不改变 $i ,因此表达式永远不会计算为 false .
你需要意识到当你这样做的时候:

$resultArray = $result->fetch_assoc();

您只是从数据库中获取了一行数据—您将无法使用从数据库中获取多行数据 $resultArray .
因此,第二个版本是正确的:

while($i = $result->fetch_assoc()) {

相关问题