如何从数据库中选择多个数据并将其分配到会话中?

Posted

技术标签:

【中文标题】如何从数据库中选择多个数据并将其分配到会话中?【英文标题】:How to select multiple data from database and assign it into session? 【发布时间】:2019-09-24 04:04:36 【问题描述】:

我想从数据库中选择数据并将其分配到会话中。后来我想调用它并使用它..

$sql = "SELECT * FROM users WHERE email = '$email' AND password = 
  '$password'";
  $query = mysqli_query($mysqli, $sql) or die ("Error: " . 
  mysqli_error($mysqli));
  $row = mysqli_num_rows($query);
  if($row == 0)
  
     echo "Invalid Username/Password. Click here to <a href = 
     'login.html'>Login</a>";
  
  else
  
     $sql = "SELECT accname FROM account WHERE email = '$email'";
     $result=mysqli_query($mysqli,$sql);
     $row=mysqli_fetch_all($result,MYSQLI_BOTH);
     $_SESSION['accname']= array_column($rows, 'accname');
     $r = mysqli_fetch_assoc($query);
     $_SESSION['fname'] = $r['fname'];
     $_SESSION['lname'] = $r['lname'];
     $_SESSION['email'] = $r['email'];
     header("Location: dashboard.php");
   

【问题讨论】:

【参考方案1】:

如果用户可以将多个accname 值与其电子邮件地址关联,那么您可以使用array_column 从结果数据中提取所有这些值:

$sql = "SELECT accname FROM account WHERE email = '$email'";
$result=mysqli_query($mysqli,$sql);
$rows=mysqli_fetch_all($result,MYSQLI_BOTH);
$_SESSION['accname']= array_column($rows, 'accname');

如果只能有一个accname,你可以简单地将调用mysqli_fetch_all改为mysqli_fetch_assoc

$sql = "SELECT accname FROM account WHERE email = '$email'";
$result=mysqli_query($mysqli,$sql);
$row=mysqli_fetch_assoc($result);
$_SESSION['accname']= $row['accname'];

【讨论】:

感谢您的回复,先生,但我尝试回显该会话,但它没有出现。我尝试回显“电子邮件”及其工作。 @FarhanHakim “它不出来”是什么意思?我想您的代码开头有session_start?你试过print_r($_SESSION);吗?你不能使用echo $_SESSION;,因为它是一个数组。您是否启用了 MySQL 错误检查? 是的,先生,会议没有出来。我尝试使用 print_r($_SESSION); 结果是这样的( [accname] => [fname] => zaki [lname] => zakaria [email] => zaki@zakaria.com )。我有 session_start。 @FarhanHakim 我在代码的第二个版本中有错字(第 4 行中的 $rows 应该是 $row)。是你用的那个吗?我现在已经在答案中更正了。 @FarhanHakim 我很高兴它能正常工作 - 很抱歉因为我的错字而浪费您的时间。

以上是关于如何从数据库中选择多个数据并将其分配到会话中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用会话数组从数据库选择中提取项目?

将表上的现有条目转换为Hibernate实体对象

Laravel:将上传的文件保存到会话中

如何存储到会话中并显示当前用户信息

如何从 SQL 查询中提取数据并将其分配给 Odoo 类列?

MS Access 2007 - 选择多条记录并将值分配给字段