To
...snip... ) LIKE '%' LOWER(:wildcard) '%' OR ...snip
jest nieprawidłowe. Masz ciąg ('%' ), po którym następuje wywołanie funkcji (LOWER() ).
Powinno być
... LIKE CONCAT('%', LOWER(:wildcard), '%') OR ...
I domyślnie w porównaniach mysql nie jest rozróżniana wielkość liter, chyba że wymusisz binary porównania lub używasz sortowania z rozróżnianiem wielkości liter w bazie danych/tabeli.