为啥 PDO fetch() 只返回第一行? [复制]

Posted

技术标签:

【中文标题】为啥 PDO fetch() 只返回第一行? [复制]【英文标题】:Why does PDO fetch() return only the first row? [duplicate]为什么 PDO fetch() 只返回第一行? [复制] 【发布时间】:2019-07-22 21:50:24 【问题描述】:

当我选择并打印它时,它只显示第一行,查询是一样的。为什么只返回一行?

php 代码:

$e = $db->query("SELECT `username`, `membership` FROM `users` WHERE `expire` != ''")->fetch();
print_r($e);

PHP 的结果:

Array ( [username] => ItzBruney05 [0] => ItzBruney05 [membership] => 300 [1] => 300 ) 

在 phpMyAdmin 中执行查询时的结果:

【问题讨论】:

因为->fetch() 只获取一行。如果您想要所有行,请执行->fetchAll() 快速浏览一下the documentation 就会回答这个问题。 欢迎来到 SO。当命令返回错误或未按您期望的方式运行时,最好阅读命令的文档。请在此处发布问题之前执行此操作。提示:许多命令的“另见”部分通常会列出可能执行您想要的操作的类似命令。如果网络文档包含用户 cmets,也请阅读它们。 【参考方案1】:

要使用 PDO 选择所有行,您需要使用 fetchAll() 而不是 fetch()

$e = $db->query("SELECT `username`, `membership` FROM `users` WHERE `expire` != ''")->fetchAll();

在 PDO 中,fetch() 返回“结果集中的下一行”。

fetchAll() 返回“一个包含所有结果集行的数组”。

【讨论】:

以上是关于为啥 PDO fetch() 只返回第一行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

PDO 中没有行时返回值

PDO中获取结果集之fetch()方法详解

PDO中获取结果集

面向对象第八天---预处理与mysql事务

PDO中获取结果集之fetchAll()方法详解

如何让 PDO::FETCH_ASSOC 将整数作为整数返回? [复制]