fetchAll() - 真的有必要吗?

fetchAll() - Is really necessary?

示例 1°:

$stmt = 'SELECT * FROM table ORDER BY id DESC LIMIT 2';
$Dp = $conn->query($stmt)->fetchAll();

示例 2°:

$stmt = 'SELECT * FROM table ORDER BY id DESC LIMIT 2';
$Dp = $conn->query($stmt);

这两个例子有什么区别?我是 PDO 的新手,我看不出这两个示例之间的区别。

这有点取决于你想对结果做什么。

您从两者中获得的实际数据结构非常不同,但您可能会问这个问题,因为两者都可以使用 foreach 循环遍历结果。

但是 fetchAll() returns 是一个纯 PHP 数组,而 query returns 是一个具有隐藏内部结构的 PHP 对象。您可以(例如)调用 json_encode 的两者之一。

通常直接遍历 PDOStatement 可能会快一点,因为您没有创建(可能很大的)中间数组。