你好,我用这个代码做搜索

    <form action="arama.php" method="get">
<input type="text" name="lol">
<select name='kategori'>
<option value="tum">Tum kategoriler</option>
<?
while ($kat = mysql_fetch_array($kategori_isim)) {
echo "
<option value=".$kat[kategori_isim].">".$kat[kategori_isim]."</option>";
}
?>
</select>
<input type="submit" value="ara">
</form>

<?
    $lol = mysql_real_escape_string($_GET['lol']);
    $kategori = mysql_real_escape_string($_GET['kategori']);

    if ($kategori == "tum") {
    $ara = mysql_query("select * from dosyalar where baslik like '%$lol%'");
    }
    else {
    $ara = mysql_query("select * from dosyalar where baslik like '%$lol%' order by kategori = '%$kategori%'");
    }
    ?>

按术语搜索但不按kategori列出。。我能做什么?

最佳答案

我不确定我是否理解这个问题(我真的不知道这些字段是什么意思),但我认为您的第二个查询应该更像:

$ara = mysql_query("SELECT * FROM dosyalar WHERE kategori LIKE '%$kategori%'");

ORDER BY仅指定如何对结果进行排序,您只能使用列名,而不能使用代码中的检查。
扩展我的答案:ORDER BY kategori = '%$kategori%'不是语法错误,但我认为它没有任何用处。检查kategori = '%$kategori%'将始终为false(除非您的值在开始和结束处都带有百分号),因此ORDER BY子句将无用,您将只执行与在if块的另一个分支中相同的选择。
指定ORDER BY kategori = '$kategori'将为所有kategori不等于$kategori的记录返回0,为匹配的记录返回1。这基本上会在查询结束时对所有匹配的行进行排序。

07-27 13:21