ホームページ > バックエンド開発 > PHPチュートリアル > 準備済みステートメントを使用して PHP で MySQL クエリを保護するにはどうすればよいですか?

準備済みステートメントを使用して PHP で MySQL クエリを保護するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 00:14:23
オリジナル
914 人が閲覧しました

How Can I Secure MySQL Queries in PHP Using Prepared Statements?

PHP の安全な MySQL プリペアド ステートメント

プリペアド ステートメントは、SQL インジェクション攻撃を防止することでデータベース クエリのセキュリティを強化します。ユーザーが指定した値をバインド パラメーターとして置き換え、悪意のあるコードが直接実行されないようにします。

安全なプリペアド ステートメントを作成するには、次の手順に従います。

  1. データベース接続: mysqli_connect() を使用してデータベースに接続します。
  2. クエリ: mysqli_prepare() を使用して準備済みステートメントを作成します。ユーザー指定の値のプレースホルダーをクエリに提供します。
  3. バインド パラメーター: mysqli_stmt_bind_param() を呼び出してバインド パラメーターのデータ型を指定し、実際の値をプレースホルダーにバインドします。
  4. クエリを実行します: 実行mysqli_stmt_execute() を使用した準備済みステートメント。
  5. 結果の取得: 必要に応じて、取得した結果を処理します。

例を示します:

$stmt = $mysqli->prepare("SELECT * FROM mytable WHERE userid=? AND category=? ORDER BY id DESC");
$stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category']));
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // Process the result row
}

$stmt->close();
ログイン後にコピー

ボーナス: スピード最適化

準備されたステートメントは通常速度を向上させますが、ページ上での使用回数は全体的な速度の最適化に大きな影響を与えません。準備は主にセキュリティのためのものであり、パフォーマンスのためのものではありません。

以上が準備済みステートメントを使用して PHP で MySQL クエリを保護するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート