php for循环没有返回所有值,为什么?

php for循环没有返回所有值,为什么?,php,for-loop,mysqli,Php,For Loop,Mysqli,我今天开始学习PHP和数据库 到目前为止,我所做的是使用一个简单的updateScores.php文件从数据库访问信息 DB高分: 我的代码: $host="localhost"; $database="players"; $user="root"; $password = ""; $error = "Cant connect"; $con = mysqli_connect($host, $user, $password); mysqli_select_db($con, $database)

我今天开始学习PHP和数据库

到目前为止,我所做的是使用一个简单的updateScores.php文件从数据库访问信息

DB高分:


我的代码:

$host="localhost";
$database="players";
$user="root";
$password = "";
$error = "Cant connect";

$con = mysqli_connect($host, $user, $password);
mysqli_select_db($con, $database) or die("Unable to connect!");

$query = "SELECT * FROM high_scores";
$result = mysqli_query($con, $query);
$n = mysqli_num_rows($result);

for($i=0; $i<$n; $i++){

    $name = mysqli_fetch_assoc($result)["name"];
    $score = mysqli_fetch_assoc($result)["score"];
    echo "Name  : ".$name;
    echo "Score : ".$score;
}
?>
我只知道第一个名字(玩家1)和最后一个分数(69) 为什么会这样?任何帮助和额外的链接将是伟大的。谢谢


您的问题是,您的
for
循环有两个对
mysqli\u fetch\u assoc
的调用,每个调用从数据库中获取一个新行:

$name = mysqli_fetch_assoc($result)["name"];
$score = mysqli_fetch_assoc($result)["score"];
因此,您最终将从一行获得名称,并从下一行获得分数。编写此循环的正常方法是使用
while
,将提取作为循环的条件,然后从提取的行访问各个值:

while ($row = mysqli_fetch_assoc($result)) {
    $name = $row["name"];
    $score = $row["score"];
    echo "Name  : ".$name;
    echo "Score : ".$score;
}

MySQLi结果是可遍历的。您只需使用
foreach

$result = mysqli_query($con, $query);
foreach($result as $row) {
    echo "Name  : ".$row['name'];
    echo "Score : ".$row['score'];
}
使用:
标题('Content-Type:text/plain')使其在浏览器中工作
while ($row = mysqli_fetch_assoc($result)) {
    $name = $row["name"];
    $score = $row["score"];
    echo "Name  : ".$name;
    echo "Score : ".$score;
}
$result = mysqli_query($con, $query);
foreach($result as $row) {
    echo "Name  : ".$row['name'];
    echo "Score : ".$row['score'];
}