在MySQLi SELECT语句中指定OR时,如何选择首先出现的内容

时间:2013-08-11 18:12:57

标签: select mysqli

通过MySQLi语句检索数据时,如下所示:

$sqls = "SELECT * FROM course WHERE course='$product_id_array' OR course='Both' ORDER BY ...";
$sqlsresults = mysqli_query($db_conx,$sqls);
while($row = mysqli_fetch_assoc($sqlsresults)) {
    $selectedContent = $row["content"];
    $selectedTitle = $row["title"];
}

有没有办法先输出'both'的匹配项?这会像重新安排声明WHERE部分的顺序一样简单吗?

1 个答案:

答案 0 :(得分:2)

您的ORDER BY仅由id明确排序。您的查询的WHERE部分无法解决此问题。要更改结果的排序方式,请使用ORDER BY

SELECT *
FROM course
WHERE course=...
OR course='Both'
ORDER BY CASE course WHEN 'Both' THEN 0 ELSE 1 END ASC, id DESC

无关注意:如果$product_id_array包含不受信任的用户输入,则用户可以将'; DELETE FROM course; --之类的内容放入其中。阅读参数化查询以了解如何防止这种情况。