如何保存$ stmt结果,以便稍后我可以循环它们?

时间:2013-08-23 14:18:50

标签: php mysqli

这部分我的php代码:

$stmt->execute();
$stmt->bind_result($category, $number);

我知道,我可以通过以下方式完成结果:

while ($stmt->fetch())

但这不是我想要的。我想将结果放在变量(数组)中。然后使用另一个循环,我将多次遍历数据库结果。

对我来说,在循环中搜索结果集非常重要。

是否有命令将fetch()结果自动放入数组中?如您所见,我有两列,分类和数字。

或者,我可以多次查询数据库(对于每个类别),但这不是我喜欢的。

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以将每个提取操作存储在数组条目中:

$stmt->execute();
$stmt->bind_result($category, $number);

$results = [];

while ($stmt->fetch()) 
   $results[] = [$category, $number]
;

然后根据需要随时使用该数组。然而,我会说绑定结果并不是一个好主意,我会使用结果集Traversable性质来处理结果而不是::fetch()

$stmt->execute();
$result = $stmt->get_result();
$cached = new CachingIterator($result, CachingIterator::FULL_CACHE);

foreach ($cached as $row) {
   ...
}

...

foreach ($cached as $row) {
   ...
}