誤解したかもしれませんが、これを行うことを検討しましたか:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
ユーザーが空白で区切られた複数の単語を入力した場合は、文字列を単語に分割し、クエリを次のように変更します
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...