sql >> データベース >  >> RDS >> Mysql

MySQLWHERELIKEがphpおよびpdoバインドを使用して複数のフィールドで機能しない

    問題はおそらく$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を使用します 。




    1. Wordpressのカスタムデータを保存するためのベストプラクティスは何ですか

    2. SQLServerで日付と時刻を操作する際の問題のトラブルシューティング

    3. aioMySQLがPythonに接続していません

    4. MySQLは複雑なクエリ結果をカウントしますか?