ホームページ >バックエンド開発 >PHPチュートリアル >MySQL INSERT ステートメントに PHP 変数を安全に含めるにはどうすればよいですか?

MySQL INSERT ステートメントに PHP 変数を安全に含めるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-30 14:38:14413ブラウズ

How Can I Safely Include PHP Variables in MySQL INSERT Statements?

MySQL ステートメントに PHP 変数を含める

VALUES 句の一部として PHP 変数を使用してコンテンツ テーブルに値を挿入すると、問題が発生する可能性があります。この問題に対処し、正しいアプローチを提供しましょう。

プリペアド ステートメントの使用

MySQL ステートメントで PHP 変数を正しく処理することが重要です。主なルールは、準備されたステートメントを使用することです。 SQL ステートメント内の PHP 変数をプレースホルダーに置き換えて、次の手順に従います。

  1. 更新されたクエリを準備します
  2. 変数をクエリにバインドします対応するプレースホルダー
  3. 実行準備されたステートメント

準備されたステートメントの実装

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

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