通过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
部分的顺序一样简单吗?
答案 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; --
之类的内容放入其中。阅读参数化查询以了解如何防止这种情况。