Crozin pomogło po Twojemu ale teraz zapytanie wygląda tak:
$id = '67, 54, 95, 23, 56, 15, 2';
SELECT * FROM tabela WHERE id IN({$id}) ORDER BY FIELD(id, {$id})
wtedy wszystko działa i sortowanie jest po mojemu tyle, że jeśli będę miał np do wyświetlenia 200 rekordów to mogę skorzystać z takiego sposobu? Wtedy zapytanie jest bardzo długie, ponieważ muszę 2 razy użyć zmiennej $id
edit:
mam jeszcze jedno pytanie:
przykład:
$id = '67, 54, 95, 23';
$resInfo = db->query("SELECT id, nick FROM tabela WHERE id IN({$id}) ORDER BY FIELD(id, {$id})");
(
(
[id] => 67
[nick] => przyklad1
)
(
[id] => 54
[nick] => przyklad2
)
(
[id] => 95
[nick] => przyklad3
)
(
[id] => 23
[nick] => przyklad4
)
)
Pytanie brzmi -jak wypełnić pustą wartością jeżeli rekord nie zostanie odnaleziony w tabeli ponieważ go tam już nie ma?
Załóżmy, że nie ma w tabeli usera o id 95, wtedy rezultat tego zapytania będzie wyglądał następująco:
(
(
[id] => 67
[nick] => przyklad1
)
(
[id] => 54
[nick] => przyklad2
)
(
[id] => 23
[nick] => przyklad4
)
)
Ja jednak potrzebuję, żeby wyglądało to mniej więcej tak:
(
(
[id] => 67
[nick] => przyklad1
)
(
[id] => 54
[nick] => przyklad2
)
(
[id] => 0
[nick] => 0
)
(
[id] => 23
[nick] => przyklad4
)
)
Czy jest to możliwe?
Nie wiem czy dobrze to opisałem, chciałbym po prostu podczas zapytania gdzie wykorzystuję IN() wyświetlić również rekordy które nie istnieją, czyli w momencie jeżeli nie znalazł rekordu o id jednym z tych w nawiasie IN(xx, xx, xx, xx) to żeby wyświetlił również w tablicy tylko jako pole puste lub '0'.
Czy da się to zrobić za pomocą jakiegoś tajemniczego sposobu już na poziomie zapytania do bazy czy trzeba kombinować z pętlami?