我最近将我的代码从mysql切换到mysqli OOP,以便更好地练习。 我正在尝试从我的 mysql 表中获取user_id
并将其保存在 $_SESSION['user_id']
中。我已经尝试了许多不同的代码迭代,并工作了几个小时,但没有运气。 截至目前$_SESSION['user_id']
什么也没返回。 它适用于我的旧 mysql 代码,所以我知道我的表不是问题。 我仍然是mysqli的新手,我将非常感谢在这件事上的任何帮助。
这是 PHP:
<?php
session_start();
$con = new mysqli("localhost","root","pw","db");
if (mysqli_connect_errno()) {
printf("Connect failed: %s'n", mysqli_connect_error());
exit();
}
if(isset($_POST['submit'])){
$query = "SELECT * FROM tapp_login WHERE username = ? AND password = ? LIMIT 1";
$username = $_POST['user_name'];
$password = $_POST['pwd'];
$stmt = $con->prepare($query);
$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($row = $stmt->fetch()){ //fetching the contents of the row
$_SESSION['user_id'] = $row[1];
$_SESSION['LOGIN_STATUS']=true;
$_SESSION['user_name'] = $username;
echo 'true';
}
}
else {
echo 'false';
}
$stmt->free_result();
$stmt->close();
}
else{
}
$con->close();
?>
验证有效,用户名已成功存储在会话中。 我认为错误出在$row = $stmt->fetch()
但我无法弄清楚。提前感谢!
我认为问题是这一行:
$_SESSION['user_id'] = $row[1];
我认为它应该是$row[0]或$row['user_id']。
(注意:我使用了"user_id",但它将是保存 ID 的列的名称)