我正在使用以下方法从数据库中获取用户数据:
$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']
。
答案 0 :(得分:6)
您可以将整个$数据存储在一个会话变量中:
$_SESSION['data']=$data;
或者您可以执行以下操作:
foreach($data as $key => $value)
$_SESSION[$key]=$value;
答案 1 :(得分:0)
不要在会话中存储数据库信息。会话旨在使volatile数据持久化。数据库中的数据已经是持久的,因此将数据库数据放入会话中没有必要和糟糕的设计。