在PHP中缓存来自MySQL的数据?

时间:2012-09-25 09:31:54

标签: php mysql arrays caching

是否有可能在我的数据库中询问所有数据并从中创建对象并将其保存到数组或其他内容中,所以我只需要调用数据库一次,之后我只使用本地数组?如果是的话,它是如何完成的?

public function getAllProjects(){

   $query="SELECT * FROM projects";
   $result=mysql_query($query);
   $num=mysql_numrows($result);
   while ($row = mysql_fetch_object($result)) {
      // save object into array
   }
}

public function fetchRow($row){
  include("Project.php");
  $project = new Project();

  $id=$row->id;
  $project->setId($id); 

  $title=$row->title;
  $project->setTitle($title);   

  $infos=$row->info;
  $project->setInfo($infos);

  $text=$row->text;
  $project->setText($text);

  $cate=$row->category;
  $project->setCategory($cate);

  return $project;
}

如果我有这样的代码。如何将对象正确存储到数组中,从中获取数据?为什么我不能创建多个“Project”类型的对象?

2 个答案:

答案 0 :(得分:2)

让我们忽略你内存不足的事实。

如果数组中包含所有内容,则不再具有关系数据库的功能 尝试在php中搜索多兆字节的多维数组,并为延长的咖啡休息时间做好准备。 如果您正在考虑做这样的事情是因为您觉得数据库很慢......您应该了解数据规范化并正确使用索引。
没有NoSQL不是答案 抱歉弹出你的气球。

编辑补充:您可以使用memcache存储一些昂贵流程的最终产品。不要费心存储琐碎查询的结果,mysql的内部缓存非常适合那些。

答案 1 :(得分:1)

您应该在php中使用$_SESSION vars,要使用它们,请在代码的开头添加session_start()。然后,您可以使用$_SESSION['selectaname'] = yourvar

设置变量

没有什么可以阻止您创建像"SELECT username FROM users WHERE id = 1"这样的SQL查询,然后设置$_SESSION['user'] = $queryresult

然后你会有这个:

echo $_SESSION['user'];

"mylogin"