ホームページ >データベース >mysql チュートリアル >プリペアドステートメントは MySQL の変数カラム名を処理できますか?
MySQL プリペアド ステートメントと動的カラム名: 解決策
JDBC プリペアド ステートメントは、セキュリティとパフォーマンスに大きな利点をもたらします。 パラメータ化されたクエリは SQL インジェクションを防ぎますが、変数列名の処理には課題があります。
MySQL のプリペアド ステートメント内で変数カラム名を Java と組み合わせて直接使用することはサポートされていません。 データベースは、これらの名前を動的な値ではなくリテラル文字列として扱います。
この制限を克服するには、データベース スキーマを修正することをお勧めします。 動的な列名の必要性は、多くの場合、データ モデルが非効率であることを示しています。 これらの名前を保存する専用の列を作成すると、データの整合性が維持され、より適切なデータベース設計が促進されます。
データベースの再構築が現実的でない場合、開発者は回避策を採用できます。これには、SQL クエリを手動で構築し、SQL インジェクションの脆弱性を防ぐためにユーザーが指定したすべての列名を慎重にサニタイズする必要があります。 String#replace()
などの文字列操作テクニックを使用すると、列名内の特殊文字を適切に引用符で囲んだりエスケープしたりできます。 このアプローチでは、SQL インジェクションのリスクを回避するために特別な注意が必要です。
以上がプリペアドステートメントは MySQL の変数カラム名を処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。