在_SESSION数据中存储来自DB的信息

时间:2012-09-19 11:30:48

标签: php

我正在使用以下方法从数据库中获取用户数据:

$stmt = $db->prepare("SELECT usernames FROM login.users WHERE emails = :email");
$stmt->bindValue(":email", $email);
$stmt->execute();

除了用户名之外的其他领域(我还没有明确具体说明我将使用哪些领域)。

由于我抓取一个用户的数据,它应该返回一行数据。因此,我可以使用:

$data = $stmt->fetch(PDO::FETCH_ASSOC);

这将在$ data中为我提供一个关联数组。但是,我如何将其转移到$ _SESSION?

Array copying in PHP给了我使用的想法:

$_SESSION[$index] = $data[$index];

或类似,但我如何自动查找$ index是什么? 我真的很喜欢它,如果我可以更改SELECT语句以包含不同的列而不必为每一列都有$_SESSION['columnname'] = $data['columnname']

2 个答案:

答案 0 :(得分:6)

您可以将整个$数据存储在一个会话变量中:

$_SESSION['data']=$data;

或者您可以执行以下操作:

foreach($data as $key => $value)
    $_SESSION[$key]=$value;

答案 1 :(得分:0)

不要在会话中存储数据库信息。会话旨在使volatile数据持久化。数据库中的数据已经是持久的,因此将数据库数据放入会话中没有必要和糟糕的设计。