問題はおそらく$this->phone
クエリを実行すると空になります。
その場合、クエリはSELECT * FROM [...] OR WHERE phone LIKE '%%'
になります。 常にすべてを返します。
解決策:電話の基準が提供されていない場合は除外するか、(ハッキングアラート! )その列には決して発生しない値を使用してください。
これを行う別の方法は、クエリを次のようなものに変更することです
SELECT *
FROM directory
WHERE name LIKE :name
AND :name_provided = 1
OR phone LIKE :phone
AND :phone_provided = 1
次に、:phone_provided
をバインドします $this->phone
の場合は1に が定義され、それ以外の場合は0です。同様に:name_provided
を使用します 。