我试图让ORDER BY id DESC
在这一行php中工作,但我无法让它工作。虽然它没有它就可以工作,但它们只是以相反的顺序显示。我应该把它放在哪里?
$query = mysql_query("SELECT * FROM photos ORDER BY id DESC WHERE title LIKE '%".$search."%'");
更新:我已经用您的建议更新了 php,现在有效,谢谢。我也按照建议将其更新为 mysqli,无论如何,这可以更好地构建吗?它正在工作,只是想知道是否有人有任何改进?
<?php
$search = $_GET['search'];
$db = mysqli_connect("", "", "", "") or die ("could not connect to mysql");
$sql = "SELECT * FROM photos WHERE title LIKE '%".$search."%' ORDER BY id DESC";
$result = mysqli_query($db, $sql);
if(mysqli_num_rows($result) >=1) {
while ($row = mysqli_fetch_array($result)) {
echo"<div id='img_div'>";
echo"<img src='images/".$row['image']."'>";
echo"<h1>".$row['title']."</h1>";
echo"<p>".$date = date('j F, Y', strtotime($row['date']))."</p>";
echo"<p>".$row['link']."</p>";
echo"</div>";
}
//continue
}else{
echo "No Results";
}
?>
您的查询是错误的。 ORDER BY id DESC
应放在WHERE
子句之后,如下所示:
$query = mysql_query("SELECT * FROM photos WHERE title LIKE '%".$search."%' ORDER BY id DESC");
<小时 />旁注:
- 不要使用
mysql_*
函数,它们从 PHP 5.5 开始被弃用,并在 PHP 7.0 中完全删除。请改用mysqli
或pdo
。这就是为什么你不应该使用mysql_*
函数。 - 了解预准备语句,因为现在您的查询容易受到 SQL 注入攻击。这里有一个关于如何在PHP中防止SQL注入的好读物。