Php 如何调试“注意:在行上尝试获取中非对象的属性”

Php 如何调试“注意:在行上尝试获取中非对象的属性”,php,mysql,sql,Php,Mysql,Sql,我有这样的错误: 注意:试图在第29行的C:\xampp\htdocs\showdata.php中获取非对象的属性 这是我的密码: <?php $servername="localhost"; $username="root"; $password=""; $dbname="db1"; $tbname="student"; $conn= new mysqli($servername,$username,$password,$dbname); if($conn->connect_er

我有这样的错误:

注意:试图在第29行的C:\xampp\htdocs\showdata.php中获取非对象的属性

这是我的密码:

<?php
$servername="localhost";
$username="root";
$password="";
$dbname="db1";
$tbname="student";

$conn= new mysqli($servername,$username,$password,$dbname);
if($conn->connect_error)
{
    die("connection failed:".$conn->connect_error);
}

$sql="SELECT name,mail,password,subject,gender,city FROM $tbname";
$result=$conn->query($sql)===true;
if($result){
//if ($result === false) { die(mysqli_error($conn)); }
//{

//}
//echo $results;
//echo $sql;
//if(!$result)
//{echo "aa";
if($result-> num_rows >0)
{
    while($row= $result->fetch_assoc())
    {
        echo "id:".$row["id"]."name:".$row["name"]."email".$row["email"]."password".$row["password"]."subject".$row["subject"]."gender".$row["gender"]."city".$row["city"]."<br>";
    }
}
else
{
    echo "0 results";
}//}
$conn->close();
}
?>
对于你的错误

您将布尔值放入$result中,并期望其查询结果

在这里换车

$result=$conn->query($sql);
if($result === true){

在获取$row[email]的错误之前,请确保db表中的列名是什么,以及您所期望的是什么。

sql将邮件引用为选定字段,但php使用email错误消息中指定的第29行?@RamRaider会发出另一个通知或警告,不是指定的行。这可能是另一个问题:$result->num\u行应该是$result->num\u行。如果$result完全可以测试它。结果与你的建议相同,因为ifFALSE被评估为FALSE。@arkascha:可能是我没有解释这个。你能解释一下它的功能吗,$result=$conn->query$sql===true;我会移除我的ansOhk现在我明白了,我应该移除那个部分。谢谢你的评论啊,好吧,现在我明白了!很抱歉您应该在回答中提到$result=$conn->query$sql===true;显式地将$result的值设置为TRUE,这显然会破坏代码的结果。很抱歉没有早点意识到这一点。