加载特定MySQL记录时出现致命错误

时间:2017-09-20 05:04:18

标签: php mysql

:) 我正在编写一个带有数据库连接的小型Web应用程序。 如果URL以?tag=whatever结尾,则在这种情况下,它应仅选择包含类别(rubrik)whatever的记录。它工作,但后来我重写了一点代码,现在我找不到错误。 :d

这是我的PHP代码:

if(isset($_GET['tag'])) {
    $rubrik = $_GET['tag'];
    $rubrik = mysqli_real_escape_string($conn,$rubrik);
    $sql = "SELECT * FROM `projects` WHERE `rubrik`=`". $rubrik ."` ORDER BY `datum` DESC";
    $result = $conn->query($sql);
}
else {
    $sql = "SELECT * FROM `projects` ORDER BY `datum` DESC";
    $result = $conn->query($sql);
}

while($row = $result->fetch_assoc()) {
    echo "<a href='project.php?id=".$row["id"]."'><div class='card ". $row["rubrik"] ."'><h4>".$row["name"]."</h4><p>".$row["funktion"]."</p></div></a>";
}

如果我只是打开index.php,它就像往常一样工作。但是如果我输入index.php?tag=whatever

弹出此错误:

Fatal error: Call to a member function fetch_assoc() on a non-object

有谁知道我做错了什么?感谢您的帮助! :)

3 个答案:

答案 0 :(得分:2)

您的查询使用反引号,而它应该使用单引号。 Backtick用于数据库,表或列标识符,而单引号用于字符串或日期字面值。

改变
RecylerView

"SELECT * FROM `projects` WHERE `rubrik`=`". $rubrik ."` ORDER BY `datum` DESC";

答案 1 :(得分:0)

尝试更新您的代码,如下所示

    if(isset($_GET['tag'])) {
        $rubrik = $_GET['tag'];
        $rubrik = mysqli_real_escape_string($conn,$rubrik);
        $sql = "SELECT * FROM `projects` WHERE `rubrik`=`". $rubrik ."` ORDER BY `datum` DESC";
        $result = $conn->query($sql);
    }
    else {
        $sql = "SELECT * FROM `projects` ORDER BY `datum` DESC";
        $result = $conn->query($sql);
    }
    if( $result){
    while($row = $result->fetch_assoc()) {
        echo "<a href='project.php?id=".$row["id"]."'><div class='card ". $row["rubrik"] ."'><h4>".$row["name"]."</h4><p>".$row["funktion"]."</p></div></a>";
}
    }

答案 2 :(得分:0)

选择查询中的错误

"SELECT * FROM `projects` WHERE `rubrik`=`". $rubrik ."` ORDER BY `datum` DESC";// remove ` symbol in php variable $rubrik