首页 > 解决方案 > 创建当前会话变量不起作用

问题描述

我有一张桌子,它有更多的列:

id | username | picture

图片为varchar类型,保存用户图片路径username为varchar且唯一

 <?php
session_start();

if (isset($_POST["logIn"])) {
    $connection = new mysqli(...);

    $email = $connection->real_escape_string($_POST["email"]);
    $password = sha1($connection->real_escape_string($_POST["password"]));
    $data = $connection->query("SELECT * FROM users WHERE email='$email' AND password='$password'");

    if ($data->num_rows > 0) {
        $_SESSION["email"] = $email;
        $_SESSION["loggedIn"] = 1;
        $picture = $connection->query("SELECT picture FROM users WHERE email='$email' AND password='$password'");
        $_SESSION["picture"]=$picture;
        header("Location:../index.php");
        exit();

    }

所以我想做的是,创建一个$_SESSION["picture"]变量来保留用户名图片的值,我的意思是现在尝试登录的用户的图片

标签: phpsql

解决方案


您必须调用 fetch 函数才能从表中获取数据。

$data = $connection->query("SELECT picture FROM users WHERE email='$email' AND password='$password'");
if ($data->num_rows > 0) {
    $row = $data->fetch_assoc();
    $_SESSION["email"] = $email;
    $_SESSION["loggedIn"] = 1;
    $_SESSION["picture"]=$row['picture'];
    header("Location:../index.php");
    exit();
}

推荐阅读