Toto
...snip... ) LIKE '%' LOWER(:wildcard) '%' OR ...snip
je nesprávné. Máte řetězec ('%' ) následované voláním funkce (LOWER() ) následovaný dalším řetězcem a oni tam jen sedí - žádná spojovací logika, žádné zřetězení, bla bla bla .
Mělo by to být
... LIKE CONCAT('%', LOWER(:wildcard), '%') OR ...
A ve výchozím nastavení se při porovnání mysql nerozlišují malá a velká písmena, pokud nevynutíte binary porovnání, nebo používáte řazení rozlišující malá a velká písmena ve vaší db/tabulce.