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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-12 16:34:10797ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。