Ini
...snip... ) LIKE '%' LOWER(:wildcard) '%' OR ...snip
tidak benar. Anda memiliki string ('%'
) diikuti oleh panggilan fungsi (LOWER()
) diikuti oleh string lain, dan mereka hanya duduk di sana - tidak ada logika penghubung, tidak ada penggabungan, bla bla bla .
Seharusnya
... LIKE CONCAT('%', LOWER(:wildcard), '%') OR ...
Dan secara default, perbandingan mysql TIDAK peka huruf besar/kecil, kecuali jika Anda memaksa binary
perbandingan, atau Anda menggunakan susunan peka huruf besar/kecil pada db/tabel Anda.