Masalahnya mungkin $this->phone kosong saat Anda menjalankan kueri.
Dalam hal ini, kuerinya adalah SELECT * FROM [...] OR WHERE phone LIKE '%%' yang akan selalu mengembalikan segalanya.
Solusi:tinggalkan kriteria telepon jika tidak disediakan atau (peringatan retas! ) gunakan nilai yang tidak akan pernah muncul di kolom tersebut.
Cara lain untuk melakukan ini adalah mengubah kueri menjadi sesuatu seperti
SELECT *
FROM directory
WHERE name LIKE :name
AND :name_provided = 1
OR phone LIKE :phone
AND :phone_provided = 1
Dan kemudian ikat :phone_provided ke 1 jika $this->phone didefinisikan, 0 sebaliknya. Begitu juga dengan :name_provided .