:)
我正在编写一个带有数据库连接的小型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
有谁知道我做错了什么?感谢您的帮助! :)
答案 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