【问题标题】:MySQL Value as PHP SessionMySQL 值作为 PHP 会话
【发布时间】:2012-11-29 01:36:47
【问题描述】:

我有一个注册脚本,其中用户 ID 在注册后保存为会话变量,并且用户被重定向到他们的主页。由于某种原因,用户 ID 未存储在会话变量中。这个完全相同的脚本在另一个项目上工作,我只是拿了这个项目并更改了数据库连接设置,现在它不工作了。

这是注册脚本:

    mysqli_connect($db_host, $db_user, $db_pass) OR DIE (mysqli_error());
    // select the db
    mysqli_select_db ($link, $db_name) OR DIE ("Unable to select db".mysqli_error($db_name));

     // our sql query
    $sql = "INSERT INTO seekers (first_name, last_name, username, email, password, salt) VALUES ('$firstName', '$lastName', '$username', '$email', '$hashedPW', '$salt');";

    //save the updated information to the database          
    $result = mysqli_query($link, $sql) or die("Error in Query: " . mysqli_error($link));
    if (!mysqli_error($link)) {

        $row = mysqli_fetch_assoc($result);
        $_SESSION['user_id'] = mysqli_insert_id($link);
        $_SESSION['loggedin'] = TRUE;
        header("Location: ../index.php");
    }

这里是受保护页面上的会话检查和数据库查询:

session_start();

if(isset($_SESSION['loggedin']) && $_SESSION['user_id'] != 'user_id') {

    include_once('includes/user.header.php');

    //set user_id
    $user_id = $_SESSION['user_id'];

    //include the logged in user header
    include_once('includes/user.header.php');

    //select user information according to their logged in user_id
    $sql = $link->query('SELECT * FROM seekers WHERE id = "'.$user_id.'"');
    $row = mysqli_fetch_assoc($sql);

   //create piece name together
   $firstName = $link->real_escape_string($row['first_name']);
   $lastName = $link->real_escape_string($row['last_name']);
   $fullName = $firstName. " " .$lastName;

  //get username
  $username = $link->real_escape_string($row['username']);

当我被重定向到 index.php 页面时,一切看起来都很好,除了没有从数据库中查询任何用户信息。

谁能看出这里有什么问题?我知道这一定是一件小事,我只是在看它。

任何帮助将不胜感激。

编辑:所有信息也已成功存储在数据库中。

【问题讨论】:

  • 能把查询数据库的代码贴在索引页吗?如果信息正确地存储在数据库中,那么您的查询脚本一定有错误。
  • 注册脚本顶部有 session_start() 吗?
  • 是的,我在注册脚本的顶部有session_start()。我用索引页面查询更新了我的问题

标签: php mysql session mysqli


【解决方案1】:

您正在尝试在没有选择查询的情况下使用 user_id ...确实您必须获取最后一个插入 id

换行;

$_SESSION["user_id"]=mysql_insert_id();

if (!mysqli_error($link)) 

应该是

 if (!mysqli_error($result))

 $sql = $link->query('SELECT * FROM seekers WHERE id = "'.$user_id.'"');

 $sql = $link->query('SELECT * FROM seekers WHERE user_id = "'.$user_id.'"');

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多