0

データベースでユーザーを検索するための SQL クエリを作成しようとしています。ユーザーが私のウェブサイトで他のユーザーを見つけて友達を見つけるのに役立つはずです.

欲しくないことがわかっていたので、いくつかの調査を行いました。

$query = "SELECT userName, userID FROM user WHERE userID = $userName ";

ユーザーを見つけるために正確な名前を入力しなければならない場合、効果的な検索にならないからです。

いくつかの調査を行った後、前後に % 記号を使用して同様の用語を試してみることにしました。これにより、前または後に数字を言うと、それが表示される名前になる可能性があります。

オンラインで見つけた例では、次のようにフォーマットされています。

$query = "SELECT userName, userID FROM user WHERE userID Like '%{$userName}%' ";

しかし、自分の Web サイトに実装しているときにこのクエリを実行すると、多くの結果が返されるという問題が発生しました。検索語に何も含まれていない結果が返されました。

なぜ角かっこが必要なのか理解できなかったので、角かっこなしで上記の検索クエリも試しましたが、同じ結果が得られました。

上記のコマンド クエリを使用して検索を少し厳密にする方法について何か提案はありますか?

または、友達になるユーザーをデータベースで検索する方法についての他の提案はありますか?

4

3 に答える 3

1

%サインはワイルドカード用です。したがって$userName = 'apple'、クエリが、、に一致するがappleapplepieには一致しcrabappleない場合appl

完全に一致させたい場合は、%sまたはLIKEを完全に削除してください。

于 2012-09-07T04:17:09.723 に答える
1

これを試してください。また、なぜ中括弧を使用しているのですか..

$query = "SELECT userName, userID FROM user WHERE username Like '%$userName%' ";
于 2012-09-07T04:23:20.977 に答える
0

文字列を検討してください

Apple iApple Apple Product

入力した場合Apple

'%{$ userName}%'"のように

戻り値:戻りますApple、、理由:両側のは、検索語の前後のすべてのテキストを受け入れることを示し iAppleますApple Product
%

'{$ userName}%'"のように

戻り値:戻り値AppleApple Product
理由%右側は、検索語の後のすべてのテキストを受け入れることを示します

'%{$userName}'"のように

戻り値:戻り値AppleiApple
理由%左側は、検索語の前にすべてのテキストを受け入れることを示します

'{$userName}'"のように

戻り値:戻りますApple
理由:いいえ%検索を検索語に制限します

さらに

あなたの質問は

  $ username = mysqli_real_escape_string($ userName);
  $ query = "SELECT userName、userID FROM user WHERE userName Like'%{$ username}%'";
于 2012-09-07T04:16:27.240 に答える