php 我在使用like和order by从数据库中选择数据时遇到问题

gcxthw6b  于 2022-12-02  发布在  PHP
关注(0)|答案(2)|浏览(121)

我正在做一个过滤器,你可以选择颜色和选择最新的。它会过滤他们,但顺序不工作的一些原因。
我试过这种方法,它输出与数据库表匹配的颜色,但不按日期排序。

$color_arr = ["red", "blue", "white"];

foreach($color_arr as $color) {
    $data = $conn->query("SELECT * FROM `prod_items` WHERE item_color LIKE '%$color%' ORDER BY `item_date` DESC");
    while ($row = $data->fetch()) {
        print_r($row);
    }
}
5us2dqdw

5us2dqdw1#

你可以按多个字段排序,下面是MYSQL查询:

SELECT * FROM `prod_items` WHERE item_color LIKE '%$color%' ORDER BY `item_date` DESC, `price` DESC"

首先按item_date排序,然后按价格排序。

42fyovps

42fyovps2#

不要在循环内运行sql查询。

$sql = array('0'); // Stop errors when $color_arr is empty

$color_arr = ["red", "blue", "white"];
foreach($color_arr as $color){
    $sql[] = 'item_color LIKE "%'.$color.'%"';
}

$sql1 = implode(" OR ", $sql). " ORDER BY `item_date` DESC";
$sql = "SELECT * FROM `test` WHERE $sql1"; 

$data = $conn->query($sql);
while ($row = $data->fetch_array()) {
    print_r($row);
}

相关问题