使用php和sql,我收到了这个错误:Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in - Stack trace: #0 {main} thrown -
以下是我的任何帮助的源代码:
<?php
session_start();
include 'dbh.php';
$uname=$_POST['uname'];
$pass=$_POST['pass'];
$sql="SELECT * FROM signup WHERE username='$uname' AND password='$pass'";
$result=$conn->query($sql);
if (!$row=$result->fetch_assoc()){
header("Location:error.php");
} else {
$_SESSION['name']=$_POST['uname'];
header("Location:home.php");
}
答案 0 :(得分:0)
fetch_assoc()
将返回我们从查询中获取的值集,以便您无法验证true或false。
你可以试试这个
$count = $result->fetch_row();
if ($count == 0){
header("Location:error.php");
} else {
$_SESSION['name']=$_POST['uname'];
header("Location:home.php");
}
答案 1 :(得分:0)
当您调用fetch_assoc()时,您将获得一个关联数组,并将数据库中的行名称作为键返回给您。从我看到你想要完成的是看天气与否,你有一个用户在你的基地有匹配的凭据。我会这样看。
$sql="SELECT * FROM signup WHERE username='$uname' AND password='$pass'";
$result = $conn->query($sql);
if($result->num_rows != 1){ //if there are 0 or more than 1 such user in the database
header("Location:error.php");
}else{
$_SESSION['name'] = $result->fetch_assoc()['name'];
}
我建议你看一下处理用户信息的php脚本的另一件事是&#34;准备好的陈述&#34;我会在这里附上一个链接。 https://www.w3schools.com/php/php_mysql_prepared_statements.asp
答案 2 :(得分:0)
我认为我们谈到了相同的代码:),我也有同样的错误,但解决方法是在index.php中给出登录的第一种形式中添加method =“post”