2017-12-10 10 views
1

で反転 はこれが私のクエリで声明

私は "フィッシャー" の検索

'input1', 'input2', 'input3'
それを持つユーザーを見つけます名前「フィッシャー」。 しかし、 "fisch"を検索すると、エントリは見つかりません。

IN-ステートメント(WHERE $ input IN(NAME))を "逆転"して、異なる入力のいずれかが名前の一部であるかどうかを確認する方法はありますか?任意のアイデアを

感謝。

+0

「DBMS」は何を使用していますか? –

答えて

0

あなたはワイルドカード文字を見てする必要があります:

SELECT * FROM Users WHERE FirstName IN ('fisch%') OR Name IN ('fisch%'); 

Fischerを見つける - %は、ワイルドカードとして機能します。

私は、$inputはユーザー提供の入力ではないことを願っています。それ以外の場合は、SQLインジェクション攻撃に非常に敏感です。

+1

'% 'ワイルドカードは' LIKE'だけで動作しませんか? – tonypdmtr

+0

'IN'はリテラルとの比較用ですが、' LIKE'はワイルドカード比較が可能です。 –

0

like演算子を使用して名前を検索できます。

$sql= " SELECT * FROM Users 
WHERE FirstName LIKE '%$input' OR Name LIKE '%$input' OR FirstName LIKE '$input%' OR Name LIKE '$input%'";