ホームページ >データベース >mysql チュートリアル >MySQL コードを PDO プリペアド ステートメントに変換する方法: ステップバイステップ ガイド

MySQL コードを PDO プリペアド ステートメントに変換する方法: ステップバイステップ ガイド

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 01:12:02417ブラウズ

How to Convert MySQL Code to a PDO Prepared Statement: A Step-by-Step Guide

MySQL コードを PDO ステートメントに変換する: ステップバイステップ ガイド

問題を理解する

最初の if ステートメントを PDO ステートメントに置き換えて、ID を使用してデータベースからユーザーの電子メールを取得したいと考えています。

PDO との接続

を利用するにはPDO、まず MySQL データベースへの接続を確立する必要があります:

$db_host = "127.0.0.1";
$db_user = "root";
$db_pass = "";
$db_database = "my_database";

$pdo = new PDO("mysql:host=$db_host;dbname=$db_database", $db_user, $db_pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false
]);

コードの更新

準備されたステートメント

プリペアド ステートメントは、特にユーザー入力を操作する場合に、セキュリティと可読性が向上します。

$sql = "SELECT email FROM users WHERE u_id = ?";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
$email = $stmt->fetchColumn();

更新されたコード

PDO とプリペアド ステートメントを使用した更新されたコード:

$id = $_SESSION['u_id'] ?? NULL;

if ($id) {
    $sql = "SELECT email FROM users WHERE u_id = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(1, $id, PDO::PARAM_INT);
    $stmt->execute();
    $email = $stmt->fetchColumn();
}

$email = $email ?? "";  // To avoid PHP notices
$suggestions = selectAll($table);

$optionOne = $_POST['optionOne'] ?? "";
$optionTwo = $_POST['optionTwo'] ?? "";
$newSuggestion = $_POST['new-suggestion'] ?? "";

if ($newSuggestion && $id && $email && $optionOne && $optionTwo) {
    $sql = "INSERT INTO suggestions (user_id, email, option_1, option_2) VALUES (?, ?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(1, $id, PDO::PARAM_INT);
    $stmt->bindParam(2, $email, PDO::PARAM_STR);
    $stmt->bindParam(3, $optionOne, PDO::PARAM_STR);
    $stmt->bindParam(4, $optionTwo, PDO::PARAM_STR);
    $stmt->execute();
} else {
    echo "All options must be entered";
}

以上がMySQL コードを PDO プリペアド ステートメントに変換する方法: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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