如何克隆mysql_result

时间:2011-06-21 14:57:33

标签: php mysql

我会解释我的问题 从 index.php 我发布登录和login.php我存储会话详细信息(如名称),例如:

$_SESSION['name'] =  mysql_result($res,0,"name");

然后我转发回 index.php 。 在这里,我想显示登录用户的名字:

   echo $_SESSION['name']

以及DB中的所有名称:

$result=mysql_query($query);
for ($i=0; $i<mysql_num_rows($result); $i++) {
  $row = mysql_fetch_assoc($result);
  $name =$row['name']; 
  echo $name;
}

问题出现了:登录后,所有内容(包括用户名和所有名称)都正确显示。但是,当我刷新页面时echo $_SESSION['name']显示数据库中的姓氏== $name而不是

所以我想在存储到$ _SESSION ['name']时需要克隆mysql_result($res,0,"name");

非常感谢

EDIT 我在会话中存储的唯一内容是登录名。当该人登录后,他可以从数据库中看到所有人。

2 个答案:

答案 0 :(得分:2)

如果您要克隆对象,则可以尝试以下

$object2 = clone $object1;

从php文档中看来,某些对象似乎不支持克隆,所以如果是这种情况,那么你可以尝试以下(再次,从php文档中的注释)进行深层复制

protected function deepCopy($inputObject) {
    return unserialize(serialize($inputObject)); 
}

文档页面的评论中还有其他一些好处,可在此处找到http://php.net/manual/en/language.oop5.cloning.php

祝你好运

答案 1 :(得分:0)

在我看来,最好不要在会话中存储所有其他名称。作为具有登录功能的数据库应用程序,我假设其他人可以使用和更新数据,这意味着只要他们改变某些内容,会话保存的数据在刷新时就会过时。

尝试让他们登录并设置他们的凭据,然后当他们回到索引检查他们是否已登录并在那时获取名称。这样您就不必担心克隆提取并且您拥有最新信息。