fetch_assoc()错误SQL PHP

时间:2018-02-24 18:53:55

标签: php html mysql sql

使用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");
}

3 个答案:

答案 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”