我已经将记录的用户名存储在 $_SESSION[user_name] 变量中。 如何将user_id额外存储在 $_SESSION[user_id] 变量中。我尝试使用$stmt->fetch_array(MYSQLI_NUM);但没有运气。
我有一个这样的MySQL表:
登录:
+---------------+-------------+-------------+-------------+
| auto_id | username | password | user_id |
+---------------+-------------+-------------+-------------+
| 0 | a | b | 1 |
+---------------+-------------+-------------+-------------+
| 1 | c | d | 2 |
+---------------+-------------+-------------+-------------+
| 2 | e | f | 3 |
+---------------+-------------+-------------+-------------+
我的PHP登录验证器是:
<?php
session_start();
require_once('php/config.php');
if(isset($_POST['submit'])){
$username = $_POST['user_name'];
$password = $_POST['pwd'];
$user_id_col = "3";
$stmt = $con->prepare("SELECT * FROM tapp_login WHERE username = ? AND password = ? LIMIT 1");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
if($stmt->num_rows == 1) //To check if the row exists
{
while($stmt->fetch())
{
$_SESSION['LOGIN_STATUS']=true;
$_SESSION['user_name'] = $username;
$_SESSION['user_id'] = $user_id;
echo 'true';
}
}
else {
echo 'false';
}
$stmt->close();
}
else{
}
$con->close();
?>
$stmt->fetch() 会回复一个值,但你从不将其存储在变量中。
用
while($data = $stmt->fetch()) {
$_SESSION['userid'] = $data['userid'];
}
变量
$user_id
永远不会在代码中定义。我假设您正在使用PDO进行查询,这应该可以解决问题
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION['LOGIN_STATUS']=true;
$_SESSION['user_name'] = $username;
$_SESSION['user_id'] = $row['user_id'];
由于您只期望一个结果,因此不需要while循环。
如果你想知道 神秘的PDO::FETCH_ASSOC
,您可以在手册中阅读。