【发布时间】:2020-06-21 21:03:34
【问题描述】:
我正在使用 REGEXP 通过从另一个查询中提供参数来从数据库中获取车辆名称。第一个查询是检查用户购买了哪些车辆,按数量对它们进行排序并将它们放入一个数组中。
我将 id 作为参数提供给 REGEXP,如下所示:'3|5|1|2',它返回它们按数字顺序排序(车辆名称为 1、2、3、5,而不是车辆名称为 3 ,5,1,2)。我希望它们以我输入它们的方式返回,或者如果有办法在 PHP 而不是 SQL 中做到这一点,请分享!
EXAMPLE:
$vehicles_user_has = array ( //from the first query
//ID => AMOUNT
"2" => "5" //id2 = firetruck
"1" => "3" //id1 = police car
"4" => "1" //id4 = ambulance
);
$onlyid = implode("|", (array_keys($user_vehicles_array))); ----> gives me "2|1|4"
$findnames = $conn->prepare("SELECT vehicle_name,vehicle_id FROM vehicles WHERE vehicle_id REGEXP '$onlyid'");
$findnames->execute();
while ($row = $findnames->fetch(PDO::FETCH_ASSOC)) {
echo $row['vehicle_name'] . " x " . $user_vehicles_array[$row['vehicle_id']] . "<br>";
}
This returns them sorted by ID (1,2,4):
Police car x 3
Firetruck x 5
Ambulance x 1
I want it to return:
Ambulance x 1
Police car x 3
Firetruck x 5
【问题讨论】:
标签: php mysql sql regex sql-order-by