如何从数据库中选择多个数据并将其分配到会话中?
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 我很高兴它能正常工作 - 很抱歉因为我的错字而浪费您的时间。以上是关于如何从数据库中选择多个数据并将其分配到会话中?的主要内容,如果未能解决你的问题,请参考以下文章