Detta
...snip... ) LIKE '%' LOWER(:wildcard) '%' OR ...snip
är inkorrekt. Du har en sträng ('%' ) följt av ett funktionsanrop (LOWER() ) följt av en annan sträng, och de bara sitter där - ingen kopplingslogik, ingen sammanlänkning, bla bla bla .
Det borde vara
... LIKE CONCAT('%', LOWER(:wildcard), '%') OR ...
Och som standard ÄR mysql-jämförelser skiftlägesokänsliga, om du inte tvingar fram en binary jämförelse, eller så använder du en skiftlägeskänslig sortering på din db/tabell.