为什么fetch(PDO :: FETCH_ASSOC)返回false

时间:2019-04-10 22:42:32

标签: php pdo

我试图了解PDO,并且试图从数据库返回一些值时,由于var_dump($row)的返回而导致我不断地错误,我不知道为什么。 这是我的代码

 require("db.php");
 $stmt = $db->query("SELECT * FROM names");

        while($row = $stmt->fetch(PDO::FETCH_ASSOC));
        {
            echo $row['name'] . " " . $row['surname'] . "<br>";
            var_dump($row);
        }

奇怪的是,当我这样操作时,它会返回所需的数据库记录。

 foreach($db->query("SELECT * FROM names") as $row){

            echo $row['name'] . " " . $row['surname'] . "<br>";

        }

注意:是的,我知道我应该使用准备好的语句,但是我还没有提到那一部分。

1 个答案:

答案 0 :(得分:2)

基本上是打字错误造成的

//                                          ↓this                 
while($row = $stmt->fetch(PDO::FETCH_ASSOC));
{
    echo $row['name'] . " " . $row['surname'] . "<br>";
    var_dump($row);
}

花括号前的分号将循环与花括号中的代码解除关联,并且不执行任何操作即可遍历结果集。

false结束时,您以var_dump($row)结尾,因为您已经获取了最后一行,那么下一次获取将返回false。