php for循环没有返回所有值,为什么?
我今天开始学习PHP和数据库 到目前为止,我所做的是使用一个简单的updateScores.php文件从数据库访问信息 DB高分: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)
我的代码:
$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'];
}