我想缓存我的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但没有找到解决方案。
我应该如何获取结果以从数据库结果中获取关联数组?
答案 0 :(得分:2)
mysql_fetch_ *函数一次获取一行数据。它们不返回整个结果集。为此,您必须遍历结果集并构建自己的数组:
$data = array();
while($row = mysql_fetch_assoc($result)) { // fetch as an associative array
$data[] = $row;
}