📜  fetch assoc 和 fetch 数组或对象 php 之间的区别(1)

📅  最后修改于: 2023-12-03 14:41:10.521000             🧑  作者: Mango

fetch_assoc 和 fetch 数组或对象 php 之间的区别

在 PHP 中,数据库查询结果通常使用 fetch 函数来获取,并且有两种不同的使用方法:fetch 数组和 fetch_assoc。这两种方法返回的结果有所不同,下面我们来详细讨论它们的差异。

fetch 数组

fetch() 方法返回一个由数字键值对构成的索引数组。在获取该数组时,可以通过数字下标访问每一个值。例如:

$query = $pdo->query("SELECT id, name, email FROM users");
while ($row = $query->fetch()) {
    echo $row[0] . ' ' . $row[1] . ' ' . $row[2] . '<br />';
}
fetch_assoc

与 fetch 数组不同,fetch_assoc() 方法返回一个关联数组,其中键是列名。这意味着在使用 fetch_assoc 方法时,可以通过列名获取到对应列的值。例如:

$query = $pdo->query("SELECT id, name, email FROM users");
while ($row = $query->fetch_assoc()) {
    echo $row['id'] . ' ' . $row['name'] . ' ' . $row['email'] . '<br />';
}
区别

因此,fetch 数组返回的是一个数字索引数组,而 fetch_assoc 返回的是一个列名关联的数组。当需要同时获取多列数据时,使用 fetch_assoc 更加方便,因为不需要在代码中使用索引检索每个值。例如,如果要获取查询结果中的全部列,我们可以这样写:

$query = $pdo->query("SELECT * FROM users");
while ($row = $query->fetch_assoc()) {
    echo $row['id'] . ' ' . $row['name'] . ' ' . $row['email'] . '<br />';
}

与此相反,如果要获取特定的列,使用 fetch 数组就更加合适:

$query = $pdo->query("SELECT name, email FROM users");
while ($row = $query->fetch()) {
    echo $row[0] . ' ' . $row[1] . '<br />';
}

这些 fetch 函数的区别在于它们读取数据的方式。使用哪种方法取决于查询的特定需求。无论是 fetch 数组还是 fetch_assoc 方法都是可以使用的。