To mój pierwszy post na tym forum, więc proszę o wyrozumiałość

Zacznę od początku:
Chcę posortować wyniki zapytania do bazy i tu zaczynają sie schody:
Nie interesuje mnie sortowanie alfabetyczne bo to jest pikuś.
Chciałbym sortować wyniki zapytania według części wartości kolumny wyciągniętej z bazy.
Konkretnie (zeby bylo jasne o co mi chodzi):
interesują mnie 3 kolumny: ikona, tytul i podpis
problem twki w posortowaniu wyników wedlug części tytułu, który ma format: abc [cztery cyfry 0-9] xyz (oczywiście "abc" i "xyz" to tylko przykłady

skrypt ma w pierwszej kolejnośći wyciągnąć zawartość nawiasu klamrowego, a następnie posortować: a. według wartości liczbowej w nawiasie b. alfabetycznie
Próbowałem z bazą danych:
niby działa, ale nie interesuje mnie 10k zapytań do bazy

spróbowałem, więc wyrażeń regularnych zaczynając od sortowania wg. schematu
i tu poległem

Wiem, że coś robię żle, ale sam jeszcze nie wiem co...
kiedy patrzę na ten kod wiem, że coś pominąłem, ale nie wiem jak się do tego zabrać
$wzor = '/\\[[0-9]{4}\\]/'; { }
pętla while w nieskończoność wywala mi pierwszy napotkany wynik
zastąpienie while instrukcją if daje mi tylko pierwszy wynik z bazy
"taka jest charakterystyka tych instrukcji" - to wiem
w takim razie co mogę zrobić żeby wyświetlało mi wszystkie wyniki zapytania odpowiadające łańcuchowi
mogę się tylko domyślać, że chodzi o nieodpowiednie umiejscowienie pętli w kodzie
jakieś propozycje lub sugestie?