第一个PHP查询错误


first php query error

我试图写我的第一个PHP查询,我得到以下

错误:

注意:尝试获取非对象的属性D:'Home'web'username'helloworld.php on line 36.

我做错了什么?

代码:

<?php
ini_set('display_errors', 1);
error_reporting(~0);
$servername = "myserver.com";
$username = "myusername";
$password = "mypassword";
$dbname = "mydbname";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM books";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?> 

好的,你的代码看起来是这样的:

$sql = "SELECT * FROM books";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. "<br>";
    }
} else {
    echo "0 results";
}

问题出在$result->num_rows > 0

显然你有一个错误在你的查询,所以你的$result是一个布尔值而不是一个对象,所以属性num_rows 不存在。一个更好的解决方案是:

if($result !==false){
    //handle your result here
}else{
    echo "An error appeared: ".$conn->error;
}

语法和逻辑是正确的,但是查询没有成功执行。试着在if ($result->num_rows > 0)条件之前放置一个if条件来检查。

同样,我可以通过拼错表名来重现错误。那么,您确定数据库中存在表books吗?改正它就能解决问题了

您的查询有问题。你们有一个叫"书"的桌子吗?你拼错了吗?

你的代码:if ($result->num_rows > 0) {导致问题,因为查询没有返回成功。那么它如何得到num_rows呢?

如果你想在运行if语句之前检查MySql错误,那么试试最后的代码,找出错误是什么:

<?php
ini_set('display_errors', 1);
error_reporting(~0);
$servername = "myserver.com";
$username = "myusername";
$password = "mypassword";
$dbname = "mydbname";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM books";
$result = $conn->query($sql);
if($result !== false){
    //query was a success!
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "id: " . $row["id"]. "<br>";
        }
    } else {
        echo "0 results";
    }
}else{
    //your query had an error so lets display it:
    echo "Query Error: ".$conn->error;
}

$conn->close();
?>

现在打印出来的错误是什么?