ユーザーがドロップダウンリストから名前を選択するか、人の名前またはその一部 (ワイルドカード機能) を検索フィールドに入力できるようにする検索機能があります。
私が抱えている問題は、ドロップ ダウン オプションを使用すると検索フィールドが使用されず、その逆も同様であるということです。
次のようにいくつかのSQLを試しました(変数はフォーム経由で送信されたデータを表すことに注意してください):
SELECT id, name, age FROM player
WHERE player.id = '$id'
OR player.name LIKE '%$text%'
上記を使用すると、ワイルドカード機能が正常に機能します。
ただし、ドロップダウンからプレーヤーを選択すると、すべてのプレーヤーが返されます。これは、の値$text
が何もない (空) ためであり、LIKE '%%' はすべてを選択することを意味し、すべての名前を選択するためです。
次に、次のことを試しました。
SELECT id, name, age FROM player
WHERE player.id = '$id'
AND player.name LIKE '%$text%'
ドロップダウン機能は期待どおりに機能するようになりましたが、ワイルド カード検索は機能しません。これは、AND では両方のステートメントが true である必要があり$id
、ワイルドカード エントリのみが指定されている場合は何も (空) であるため、条件が true になることはないと想定しているためです。
ドロップダウンとワイルドカード検索の両方が互いに分離して機能することを確認するために、SQLを手伝ってくれる人はいますか?
お時間をいただきありがとうございます。