ホームページ >Java >&#&チュートリアル >MySQL のプリペアド ステートメントは動的に指定されたカラム名を処理できますか?
準備されたステートメントの変数列名
問題:
準備されたステートメントを使用した行の選択、これを使用して返された列名を指定できますかMethod?
コンテキスト:
MySQL と Java を使用して、プリペアド ステートメントにパラメータとしてカラム名を含めようとすると、カラム名がリテラルとして組み込まれます。実際の列としてではなく、クエリ内の文字列names.
説明:
プリペアド ステートメントは、クエリ文字列に直接挿入せずにパラメータを指定できるようにすることで、SQL インジェクションを防ぐように設計されています。ただし、このメカニズムはパラメータ値を目的としたものであり、クエリ自体を変更するためのものではありません。
回避策:
1.データベース設計の再検討:
列名をユーザーに直接公開しないようにします。代わりに、データベースに別の列を作成して、データと一緒に目的の列名を保存するなど、別のメカニズムの使用を検討してください。
2.手動クエリ構築:
データベース設計の変更が不可能な場合は、入力列名をサニタイズして SQL クエリを手動で構築できます。 String#replace() メソッドを使用して、列名内の引用文字のインスタンスをエスケープします。
結論:
返される列を指定することはできません。プリペアドステートメントのパラメータとして名前を使用するには、目的の機能を実現する別のアプローチがあります。 SQL インジェクションの脆弱性を防ぐために、入力を適切にサニタイズしてください。
以上がMySQL のプリペアド ステートメントは動的に指定されたカラム名を処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。