Я использую REGEXP для получения названий автомобилей из базы данных, передавая им параметры из другого запроса. Первый запрос проверяет, какие транспортные средства купил пользователь, сортирует их по количеству и помещает их в массив.
Я даю идентификаторы в качестве параметров для 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