ホームページ >バックエンド開発 >PHPチュートリアル >MySQL INSERT ステートメントに PHP 変数を安全に含めるにはどうすればよいですか?
VALUES 句の一部として PHP 変数を使用してコンテンツ テーブルに値を挿入すると、問題が発生する可能性があります。この問題に対処し、正しいアプローチを提供しましょう。
MySQL ステートメントで PHP 変数を正しく処理することが重要です。主なルールは、準備されたステートメントを使用することです。 SQL ステートメント内の PHP 変数をプレースホルダーに置き換えて、次の手順に従います。
MySQLi の使用:
<?php $type = 'testing'; $reporter = "John"; $description = "whatever"; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('$type', ?, ?)"; $mysqli->execute_query($sql, [$reporter, $description]); ?>
PDO の使用:
<?php $type = 'testing'; $reporter = "John"; $description = "whatever"; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('$type', ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute([$reporter, $description]); ?>
キーワードや識別子 (データベース、テーブル、またはフィールド名) などのクエリ部分には、ホワイト リスト フィルタリングを使用します。これには、PHP 変数を事前定義された許可値のリストと明示的に比較することが含まれます。変数が許可された値と一致する場合、クエリに安全に含めることができます。それ以外の場合は、無効な入力に対して例外をスローします。
これらのガイドラインに従うことで、MySQL ステートメントでの PHP 変数の安全かつ効率的な処理が保証されます。データ リテラルを表す変数にプリペアド ステートメントを使用し、識別子にホワイト リスト フィルタリングを適用することで、データの整合性とインジェクション攻撃に対する保護が保証されます。
以上がMySQL INSERT ステートメントに PHP 変数を安全に含めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。