我正在尝试连接到我的数据库(它正在工作),我想选择表“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>
2条答案
按热度按时间agxfikkp1#
在您的版本中,您只从数据库中获取了一行。在第二个代码段中,循环的每次迭代都会从数据库中获取另一行,直到游标用完并
NULL
已返回。h9a6wy2h2#
这里就是你造成无限循环的地方:
这将导致代码简单地读取
$resultArray
进入$i
(返回的第一行数据)fetch_assoc
)一遍又一遍。$resultArray
永不改变也不改变$i
,因此表达式永远不会计算为false
.你需要意识到当你这样做的时候:
您只是从数据库中获取了一行数据—您将无法使用从数据库中获取多行数据
$resultArray
.因此,第二个版本是正确的: