缓存并迭代关联数组数组

时间:2011-12-24 01:58:35

标签: php mysql

我想缓存我的mysql结果以减少数据库负载。 要缓存结果,我使用以下函数:

$cached = $this->getMemCacheX($name);

if ($cached === false)
{
    $res = mysql_query($query, $con) or die(mysql_error());
    if ($res === false) exit('Database failure.');
    if ($fetch === "assoc")
    {
        $data = mysql_fetch_assoc($res);
    }
    else if ($fetch === "array")
    {
        $data = mysql_fetch_array($res);
    }
    if (mysql_num_rows($res) === 0) $data = 0;
    $cr = $this->saveMemCacheX($name, $data);
    if ($cr === false) exit('Cache failure.');
    return $data;
}
else
{
    return $cached;
}

我的问题是我需要保存并加载结果集,而不是我曾经使用while迭代(mysql_fetch_assoc()) - 循环如:

$res = mysql_query("...");
while ($data = mysql_fetch_assoc($res))
{
...
}

现在我需要将结果存储在缓存中,但因为我无法存储$ res,所以我需要先获取结果。

如何迭代已经获取的结果集?我尝试了一些foreach-Loops但没有找到解决方案。

我应该如何获取结果以从数据库结果中获取关联数组?

1 个答案:

答案 0 :(得分:2)

mysql_fetch_ *函数一次获取一行数据。它们不返回整个结果集。为此,您必须遍历结果集并构建自己的数组:

$data = array();
while($row = mysql_fetch_assoc($result)) { // fetch as an associative array
   $data[] = $row;
}