繁体   English   中英

fetch_assoc()错误SQL PHP

[英]fetch_assoc() error SQL PHP

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

fetch_assoc()将返回从查询中获取的一组值,因此您无法通过true或false进行验证。

你可以试试这个

$count = $result->fetch_row();
if ($count == 0){
    header("Location:error.php");
} else {
    $_SESSION['name']=$_POST['uname'];
    header("Location:home.php");
}

调用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-script的另一件事是“ Prepared Statements”,我将在此处提供一个链接。 https://www.w3schools.com/php/php_mysql_prepared_statements.asp

我想我们讨论了相同的代码:),我也遇到了相同的错误,但是解决方法是在index.php中给出登录名的第一种形式中添加method =“ post”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM