Cześć,
Mam pytanie. W jaki sposób obsługiwać, ogarniać sytuacje gdy mamy wiele parametrów przekazanych w URL do backendu?
Np. taki adres:
Kopiuj
www.strona.com/api/pakiety?a=1,2,3,4,5,6
No więc po pierwsze, na razie to nie jest kilka parametrów tylko jeden.
Jeśli chcesz, żeby to była lista parametrów oddzielonych przecinkami, to powinieneś zrobić coś takiego:
Kopiuj
<?php
$arguments = explode($_GET['a']);
Niestety PDO nie udostępnia żadnego interfejsu na bindowanie wielu wartości na raz. Tutaj jest podpowiedź jak można zbudować prepared query, do którego potem można zbindować wiele parametrów: https://stackoverflow.com/questions/920353/can-i-bind-an-array-to-an-in-condition-in-a-pdo-query
Kopiuj
<?php
$arguments = explode($_GET['a']);
$placeholders = str_repeat('?,', count($array) - 1) . '?';
$pdo = new PDO(...);
$stmt = $pdo->prepare(
'SELECT *
FROM table
WHERE id IN(' . $placeholders . ')'
);
$stmt->execute($arguments);
[...] lub napisać raw query i wstawić WHERE a in (".$_GET['a'].")
(oczywiście po uprzednim zwalidowaniu wartości, bo każdy może wstawić w link co zechce i popsuć ci bazę danych)
To jest potencjalna opcja, ale bardzo niezalecałbym w ogóle jej rozważać. Nie ma powodu się ku temu skłaniać, skoro są inne, lepsze sposoby żeby osiągnąć WHERE IN
.