Ich habe es vielleicht falsch verstanden, aber haben Sie darüber nachgedacht, einfach Folgendes zu tun:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
Wenn der Benutzer mehr als ein Wort, getrennt durch Leerzeichen, eingibt, teilen Sie die Zeichenfolge einfach in Wörter auf und ändern Sie die Abfrage in
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...