Esse
...snip... ) LIKE '%' LOWER(:wildcard) '%' OR ...snip
está incorreto. Você tem uma string (
'%'
) seguido por uma chamada de função (LOWER()
) seguido por outra string, e eles estão apenas sentados lá - sem lógica de conexão, sem concatenação, blá blá blá . Deveria ser
... LIKE CONCAT('%', LOWER(:wildcard), '%') OR ...
E, por padrão, as comparações do mysql NÃO diferenciam maiúsculas de minúsculas, a menos que você force um
binary
comparação, ou você está usando um agrupamento que diferencia maiúsculas de minúsculas em seu banco de dados/tabela.