ホームページ > データベース > mysql チュートリアル > 準備されたステートメントで LIKE ワイルドカードを安全に使用するにはどうすればよいですか?

準備されたステートメントで LIKE ワイルドカードを安全に使用するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-12 16:34:10
オリジナル
714 人が閲覧しました

How Can I Securely Use the LIKE Wildcard with Prepared Statements?

LIKE ワイルドカードを使用したプリペアド ステートメント: 完全ガイド

データベース クエリの分野では、プリペアド ステートメントは安全かつ効率的な方法を提供します。パラメータ化されたクエリを実行します。特定のキーワードまたはパターンに基づいてデータを検索する場合、LIKE ワイルドカードが機能します。

プリペアド ステートメントで LIKE ワイルドカードを効果的に使用するには、コード内での配置を理解することが重要です。これをプリペアド ステートメント自体に直接追加するのではなく (pstmt.setString(1、注記 "%") のように)、それを値自体に組み込む必要があります。

たとえば、プレフィックス マッチを実行するには、次のアプローチを使用します:

notes = notes
    .replace("!", "!!")
    .replace("%", "!%")
    .replace("_", "!_")
    .replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");
ログイン後にコピー

接尾辞一致の場合は、次のように変更します。

pstmt.setString(1, "%" + notes);
ログイン後にコピー

グローバル一致の場合は、次の構文を使用します:

pstmt.setString(1, "%" + notes + "%");
ログイン後にコピー

文字列内の特殊文字 (「%」や「_」など) をエスケープすることに注意することが重要です。 ") は、SQL インジェクションの脆弱性を防ぐために不可欠です。そうすることで、LIKE ワイルドカードが正しく解釈され、悪意のある攻撃からデータベースを保護できるようになります。

この詳細なデモにより、プリペアド ステートメントで LIKE ワイルドカードを効果的に使用できるようになり、次のような実装が可能になります。アプリケーションにおける堅牢で安全なデータベース検索機能。

以上が準備されたステートメントで LIKE ワイルドカードを安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート