首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过php中的会话从用户名中获取用户的用户ID?

如何通过php中的会话从用户名中获取用户的用户ID?
EN

Stack Overflow用户
提问于 2020-04-19 05:51:06
回答 2查看 585关注 0票数 0

我可以获取用户名,但当我尝试使用该信息运行查询来获取id时,它什么也不返回。代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
$_SESSION['username'] = $username;

 $connect = mysqli_connect("xxxx","xxxx","xxxx", "xxxx");

          $IDquery = "SELECT UserID FROM User WHERE Username = ".$username.";";

          $result = $connect->query("SELECT UserID FROM User WHERE Username = '$username';");

          if(mysqli_num_rows($result) > 0 ){

            $row = mysqli_fetch_assoc($result);
            $user_id = $row["UserID"];

            $_SESSION["UserID"] = $user_id;
          }

如果只有用户名,如何获取用户ID?

EN

回答 2

Stack Overflow用户

发布于 2020-04-19 06:47:25

我怀疑这一点:

代码语言:javascript
代码运行次数:0
运行
复制
$_SESSION['username'] = $username;

实际上应该是:

代码语言:javascript
代码运行次数:0
运行
复制
$username = $_SESSION['username'];

也就是说:您希望从会话中检索用户名,而不是设置会话变量。

附注:您应该真正使用参数化查询,而不是将变量混入查询字符串中。这更有效,也更安全,因为它可以防止SQL注入。你可以在this famous SO post上看看为什么和怎么做。

票数 0
EN

Stack Overflow用户

发布于 2020-05-16 00:17:35

看起来问题在于您如何尝试在查询中使用$username变量(如前所述,您还应该使用参数化查询)。首先,确保在发送$username之前知道它里面有什么。请尝试以下示例:

代码语言:javascript
代码运行次数:0
运行
复制
var_dump($_SESSION['username']);

在执行查询之前将其放入。有时,如果不确定变量是如何赋值的,从中间删除变量会有所帮助:

代码语言:javascript
代码运行次数:0
运行
复制
$IDquery = "SELECT UserID FROM User WHERE Username = ".$_SESSION['username'].";";

此外,您还需要确保在对用户进行身份验证的同时,会话中填充了您要使用的信息。这应该会在会话过程中删除查询。

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

https://stackoverflow.com/questions/61297106

复制
相关文章

相似问题

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