我可以获取用户名,但当我尝试使用该信息运行查询来获取id时,它什么也不返回。代码如下:
$_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?
发布于 2020-04-18 22:47:25
我怀疑这一点:
$_SESSION['username'] = $username;
实际上应该是:
$username = $_SESSION['username'];
也就是说:您希望从会话中检索用户名,而不是设置会话变量。
附注:您应该真正使用参数化查询,而不是将变量混入查询字符串中。这更有效,也更安全,因为它可以防止SQL注入。你可以在this famous SO post上看看为什么和怎么做。
发布于 2020-05-15 16:17:35
看起来问题在于您如何尝试在查询中使用$username变量(如前所述,您还应该使用参数化查询)。首先,确保在发送$username之前知道它里面有什么。请尝试以下示例:
var_dump($_SESSION['username']);
在执行查询之前将其放入。有时,如果不确定变量是如何赋值的,从中间删除变量会有所帮助:
$IDquery = "SELECT UserID FROM User WHERE Username = ".$_SESSION['username'].";";
此外,您还需要确保在对用户进行身份验证的同时,会话中填充了您要使用的信息。这应该会在会话过程中删除查询。
https://stackoverflow.com/questions/61297106
复制