我知道这个问题已经被问过很多次了。
但是,我找不到能帮助我解决当前问题的方案。
这是我的代码:
<?php
session_start();
$db = mysqli_connect("localhost", "root", "password", "authentication");
if (isset($_POST['login_btn'])) {
$username = mysqli_real_escape_string($db,$_POST['username']);
$password = mysqli_real_escape_string($db,$_POST['password']);
$password = md5($password);
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($db, $sql);
$idsql = "SELECT id FROM users WHERE username='$username'";
$userid = mysqli_query($db, $idsql);
if (mysqli_num_rows($result) == 1) {
$_SESSION['message'] = "You are now logged in";
$_SESSION['username'] = $username;
$_SESSION['userid'] = $userid;
header("location: home.php");
}else{
$_SESSION['message'] = "Username/password combination incorrect";
}
}
?>
_SESSION
的username
变量确实运行良好,没有任何问题。但是,当我为_SESSION
回显userid
时,会收到错误消息。我尝试了许多不同的解决方案,但似乎找不到适合该问题的解决方案。这是错误代码:
“可捕获的致命错误:第14行的C:\ xampp \ htdocs \ PokemonFight \ pokemon.php中无法将类mysqli_result的对象转换为字符串”
它引用的代码的第14行也是:
关于如何使它回显正确的用户ID,我一无所知。
最佳答案
似乎您正在尝试将mysqli_query对象转换为字符串。
$idsql = "SELECT id FROM users WHERE username='$username'";
$userid = mysqli_query($db, $idsql);
您需要获取结果,然后从结果中提取
id
字段。然后使用它附加到$_SESSION
变量。例如:
$idsql = "SELECT id FROM users WHERE username='$username'";
$userid = mysqli_query($db, $idsql);
$userid = mysqli_fetch_row($userid);
$userid = $userid[0];
然后将其填充到$ _SESSION变量中。
否则,当您尝试使用
$_SESSION['userid']
输出echo
的结果时,它将失败,因为它正在尝试执行对象到字符串的转换。您也可以尝试
print_r($_SESSION['userid']);
看到此效果。
关于php - 可捕获的 fatal error :第14行的C:\xampp\htdocs\PokemonFight\pokemon.php中无法将类mysqli_result的对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39217746/