首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用会话用户名从mysql获取数据

使用会话用户名从mysql获取数据
EN

Stack Overflow用户
提问于 2016-03-22 21:45:30
回答 2查看 2.7K关注 0票数 1

我正在为我的网站上的一个用户制作一个个人资料页,在那里这个人可以改变他/她的信息。我应该可以更改,名称,姓氏,用户名,代码等。但我已经开始使用用户名。

当一个人登录时,我将用户名存储在会话中:

index.php

代码语言:javascript
运行
复制
<?php
    if( !isset( $_SESSION['username'])) include('resources/auth/login.php');
            else exit( header('Location: home.php') );

                if( !isset( $_SESSION ) ) session_start();

    // Logout Session
    if( isset( $_GET['todo'] ) && $_GET['todo'] == 'logout'){

        session_unset();
        session_destroy();
        //echo 'You have been logged out!';
    }
?>

我做了个测试

profile.php:

代码语言:javascript
运行
复制
<?php
   if( !isset( $_SESSION ) ) session_start();
?>
   <?php //echo $_SESSION['username'];?> 

这就叫我的用户名

但是,如果我想从mysql数据库调用属于这个用户名的名字,我应该使用session[username]吗?我开始为它做一个SQL查询:

代码语言:javascript
运行
复制
<?php
    $stmt = $mysqli->prepare("SELECT firstname FROM login");

    $stmt->execute();

    $fname = null;

      $stmt->bind_result($fname);
        while($stmt->fetch()) {
          echo $fname;
        }

    $stmt->close();
    $mysqli->close();
  ?>

这是可行的,但是调用数据库中的所有名字。因此,我尝试设置u_id,这是db = to存储的会话变量中的PK:

代码语言:javascript
运行
复制
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE u_id=$username");

代码语言:javascript
运行
复制
$stmt = $mysqli->prepare("SELECT firstname FROM loginWHERE u_id = '.$_SESSION[username]'";

但是这里我得到了一个错误:未定义的变量: profile.php中的用户名

有人知道为什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-22 22:00:43

如果我很了解你,我想这个问题是:

代码语言:javascript
运行
复制
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE u_id=$username");

应该是这样:

代码语言:javascript
运行
复制
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE username ='.$_SESSION[username].'");
//forgive my syntax issues

如果您想检索记录的用户的名字,where子句的参数应该是用户的用户名,因为这是标识用户的唯一方法,但是我建议您也在会话中设置用户的id,以便where参数现在获得用户的唯一id。这是确保为特定用户检索信息的更好方法,因为两个用户可能具有相同的用户名,因此当where子句将其作为参数时,它将从数据库中检索两行,这肯定会导致问题。

票数 1
EN

Stack Overflow用户

发布于 2016-03-22 22:00:05

很有可能你没有开始这个会议。我只知道写$_SESSION‘’username‘而不是u_id =’。$_SESSIONusername的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36165849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档