plus Asked: 2020-07-27 18:42:22 +0800 CST 2020-07-27 18:42:22 +0800 CST 2020-07-27 18:42:22 +0800 CST PHP 中 fetch 和 fetchall 的区别? 772 我想知道 php 中的 fetch 和 fetchall 有什么区别,据我所见,fetch 返回一个字段并获取所有字段,但是在我看来,使用 PDO 并不重要你使用哪个,我完全使用它 (PDO:: FETCH_ASSOC) ,但我仍然想知道其中的区别,谢谢 :) php 1 Answers Voted Best Answer A. Cedano 2020-07-27T18:55:56+08:002020-07-27T18:55:56+08:00 问题中有两种不同的东西: fetch 打开为准备好逐一迭代数据的指针(通常通过循环while)。当期望有大量数据时,这是推荐的方法,因为这样您就不会遇到内存问题。 代码示例: $stmt = $pdo->prepare($sql); $stmt->execute(); while ($fila = $stmt->fetch(PDO::FETCH_ASSOC)) { $datos []= $fila; } 这里$datos它将是一个关联数组,每次指针在while. 此外,如果不需要将数据传输到另一个地方,可以在现场打印数据: while ($fila = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $fila["nombre"]." ".$fila["apellido"].PHP_EOL; } fetchAll 一次获取所有数据,不打开任何指针,将其存储在数组中。当尝试一次在数组中保存数千或数百万行时,如果不期望太多可能导致内存问题的结果,建议使用它!来自SELECT一个 代码示例: $resultado = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($resultado); 在这种情况下,它$resultado是一个包含所有查询数据的关联数组。如果要读取其中的行,可以实现一个遍历数组的循环: foreach ($resultado as $row){ echo $row["nombre"]." ".$row["apellido"].PHP_EOL; } 它几乎与 中相同fetch,只是这里我们不是通过指针对数据进行遍历,而是对已经存储在变量中的数据进行操作。例如,如果在此之前我们关闭语句,我们已经有数据$resultado并且我们可以读取它。如果fetch我们关闭语句,我们将无法读取数据。 查看PDO::FETCH_ASSOC只是表示数据的一种方式。其中一个fetch_style存在,表示您希望结果以关联数组的形式出现,其中键是每列的名称,值是属于该列的数据。您可以将它与fetch和 一起使用fetchAll。 需要注意的是 forfetch和 forfetchAll的默认样式都是PDO::FETCH_BOTH. 但是您可以使用该方法将默认样式设置为连接对象setAttribute,更改常量的值PDO::ATTR_DEFAULT_FETCH_MODE;是使用 . 的特定语句setFechMode。
问题中有两种不同的东西:
fetch
打开为准备好逐一迭代数据的指针(通常通过循环
while
)。当期望有大量数据时,这是推荐的方法,因为这样您就不会遇到内存问题。代码示例:
这里
$datos
它将是一个关联数组,每次指针在while
.此外,如果不需要将数据传输到另一个地方,可以在现场打印数据:
fetchAll
一次获取所有数据,不打开任何指针,将其存储在数组中。当尝试一次在数组中保存数千或数百万行时,如果不期望太多可能导致内存问题的结果,建议使用它!来自
SELECT
一个代码示例:
在这种情况下,它
$resultado
是一个包含所有查询数据的关联数组。如果要读取其中的行,可以实现一个遍历数组的循环:它几乎与 中相同
fetch
,只是这里我们不是通过指针对数据进行遍历,而是对已经存储在变量中的数据进行操作。例如,如果在此之前我们关闭语句,我们已经有数据$resultado
并且我们可以读取它。如果fetch
我们关闭语句,我们将无法读取数据。查看
PDO::FETCH_ASSOC
只是表示数据的一种方式。其中一个fetch_style
存在,表示您希望结果以关联数组的形式出现,其中键是每列的名称,值是属于该列的数据。您可以将它与fetch
和 一起使用fetchAll
。需要注意的是 for
fetch
和 forfetchAll
的默认样式都是PDO::FETCH_BOTH
. 但是您可以使用该方法将默认样式设置为连接对象setAttribute
,更改常量的值PDO::ATTR_DEFAULT_FETCH_MODE
;是使用 . 的特定语句setFechMode
。