これ
...snip... ) LIKE '%' LOWER(:wildcard) '%' OR ...snip
間違っている。文字列があります('%' )の後に関数呼び出し(LOWER() )の後に別の文字列が続き、それらはただそこに座っています-接続ロジック、連結、何とか何とか何とか。
あるべきです
... LIKE CONCAT('%', LOWER(:wildcard), '%') OR ...
また、デフォルトでは、binaryを強制しない限り、mysqlの比較では大文字と小文字が区別されません。 比較、またはデータベース/テーブルで大文字と小文字を区別する照合を使用しています。