0

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

$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?

PHP中的数组复制给了我使用的想法:

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

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

4

2 回答 2

6

您可以将整个 $data 存储在单个会话变量中:

$_SESSION['data']=$data;

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

foreach($data as $key => $value)
    $_SESSION[$key]=$value;
于 2012-09-19T11:33:06.063 回答
0

不要在会话中存储数据库信息。会话旨在使易失性数据持久化。数据库中的数据已经是持久的,因此没有必要将数据库数据放在会话中,而且设计不好。

于 2012-09-19T11:38:24.487 回答