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
.