繁体   English   中英

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))
<?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()函数

您正在获取第一行,但不对其进行任何操作,因此该行不会在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))
{

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM