ホームページ >データベース >mysql チュートリアル >セキュリティと効率を向上させるために MySQL コードを PDO ステートメントに変換するにはどうすればよいですか?

セキュリティと効率を向上させるために MySQL コードを PDO ステートメントに変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-09 04:32:021003ブラウズ

How to Convert MySQL Code to PDO Statements for Improved Security and Efficiency?

MySQL コードを PDO ステートメントに変換するには?

最初の if ステートメントを PDO ステートメントに変更するには、以下を行う必要があります。まず、PDO を使用して接続を確立します。その方法は次のとおりです。

// Define database connection parameters
$db_host = "127.0.0.1";
$db_name = "name_of_database";
$db_user = "user_name";
$db_pass = "user_password";

try {
    // Create a connection to the MySQL database using PDO
    $pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
} catch (PDOException $e) {
    echo 'Failed to connect to the database: ' . $e->getMessage();
}

次に、PDO でプリペアド ステートメントを使用するように、既存のコードを変更する必要があります。コードの更新バージョンは次のとおりです。

// Initialize variables
$id = $_SESSION['u_id'] ?? NULL;
$email = NULL;

if($id) {
    // Prepare the SQL statement
    $sql = "SELECT email FROM users WHERE u_id = :id";
    $query = $pdo->prepare($sql);
    
    // Bind the parameter and execute the query
    $query->bindParam(':id', $id, PDO::PARAM_STR);
    $query->execute();
    
    // Fetch the result
    $row = $query->fetch(PDO::FETCH_OBJ);
    $email = $row->email;
}

// Initialize other variables
$optionOne     = $_POST['optionOne'] ?? "";
$optionTwo     = $_POST['optionTwo'] ?? "";
$newSuggestion = $_POST['new-suggestion'] ?? "";

// Check if the form was submitted
if($newSuggestion and $id and $email and $optionOne and $optionTwo) {
    // Prepare the SQL statement
    $sql = "INSERT INTO suggestions (user_id, email, option_1, option_2) VALUES (:id, :email, :option_1, :option_2)";
    $query = $pdo->prepare($sql);

    // Bind the parameters and execute the query
    $query->bindParam(':id', $id, PDO::PARAM_STR);
    $query->bindParam(':email', $email, PDO::PARAM_STR);
    $query->bindParam(':option_1', $optionOne, PDO::PARAM_STR);
    $query->bindParam(':option_2', $optionTwo, PDO::PARAM_STR);
    $query->execute();
} else {
    echo "All options must be entered.";
}

この更新されたコードは、セキュリティと効率を向上させるために、PDO で準備されたステートメントを使用します。また、NULL 合体演算子 (??) を使用して、変数が null の場合にデフォルト値を割り当てます。

以上がセキュリティと効率を向上させるために MySQL コードを PDO ステートメントに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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