MySQL SELECT语句只返回一行


MySQL SELECT statement only returning one row

我确信我的表中有两行数据符合where子句的条件,但我的编码只输出(回显)一行。我做错了什么?

<?php

$connect= mysqli_connect("localhost", "root", "", "friends_list")
or die('error connecting with the database');
$query= "SELECT * FROM people WHERE age=19";
$result= mysqli_query($connect, $query)
or die('error querying the database');
$row= mysqli_fetch_array($result);
while ($row = mysqli_fetch_array($result))
{
echo $row['first_name'] . " " . $row['last_name'] . " is " . $row['age'] . "<br/>"                             
}
mysqli_close($connect);
?>

您吞下了第一行,却什么都没做;即,更改:

$row= mysqli_fetch_array($result);
while ($row = mysqli_fetch_array($result))

至:

while ($row = mysqli_fetch_array($result))

您正在获取第一行,但没有对其执行任何操作,因此这一行不会在while循环中获取,因此不会输出。

$row= mysqli_fetch_array($result); // remove this
while ($row = mysqli_fetch_array($result))
{
echo $row['first_name'] . " " . $row['last_name'] . " is " . $row['age'] . "<br/>"                             
}

在本部分中:

$row= mysqli_fetch_array($result);
while ($row = mysqli_fetch_array($result))
{

你跳过了第一排。你拿到它,然后在while循环中立即拿到下一个。你应该删除第一个提取,只有这个:

while ($row = mysqli_fetch_array($result))
{
<?php
    $connect= mysqli_connect("localhost", "root", "", "friends_list")
    or die('error connecting with the database');
    $query= "SELECT * FROM people WHERE age=19";
    $result= mysqli_query($connect, $query)
    or die('error querying the database');
    while ($row = $result->fetch_assoc()){
        echo $row['first_name'] . " " . $row['last_name'] . " is " . $row['age'] . "<br/>"                             
    }
    mysqli_close($connect);
?>

$result->fetch_assoc()将获取与sql条件匹配的所有内容,并且可以防止类似上面所做的进一步错误。您可以在这里了解更多信息fetch_assoc()函数