首頁 >資料庫 >mysql教程 >如何在 PHP 中將 MySQLi 語句轉換為 PDO?

如何在 PHP 中將 MySQLi 語句轉換為 PDO?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-06 03:34:02227瀏覽

How to convert a MySQLi statement to PDO in PHP?

如何使用PDO 進行SQL 轉換

簡介

PDO(PHP 資料)提供了一個統一的API,用於在PHP 中與資料庫進行互動。它提供了一種結構化且一致的方法來編寫和執行 SQL 查詢。本文示範如何將提供的 PHP 程式碼中的第一個 if 語句從使用 mysqli 轉換為使用 PDO 進行資料庫存取。

更新程式碼

要在中使用PDO if 語句,先定義資料庫連線參數:

$db_host = "127.0.0.1";
$db_name = "name_of_database";
$db_user = "user_name";
$db_pass = "user_password";

// Create a connection to the MySQL database
$pdo = new PDO(
    "mysql:host={$db_host};dbname={$db_name}",
    $db_user,
    $db_pass,
    [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => FALSE
    ]
);

接下來,更新if 語句以使用PDO 準備好的語句:

if ($id) {
    $sql = "SELECT email FROM users WHERE u_id = ?";
    $query = $pdo->prepare($sql);    // Prepare the query 
    $query->execute([$id]);          // Bind the parameter and execute the query 
    $email = $query->fetchColumn();  // Return the value from the database
}

fetchColumn() 方法擷取單一結果集中的欄位。

其他注意事項

  • 錯誤處理: 使用 PDO 時應正確處理異常。
  • 參數綁定:使用準備好的語句來防止 SQL 注入漏洞。
  • 空合併運算子:使用空合併運算子 (??) 來防止通知或未定義變數時發生錯誤。

完成更新的程式碼

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

if ($id) {
    $sql = "SELECT email FROM users WHERE u_id = ?";
    $query = $pdo->prepare($sql);
    $query->execute([$id]);
    $email = $query->fetchColumn();
}

$email = $email ?? "";
$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 (?, ?, ?, ?)";
    $query = $pdo->prepare($sql);
    $query->execute([$id, $email, $optionOne, $optionTwo]);
} else {
    echo "All options must be entered";
}

透過將程式碼轉換為使用PDO,您可以增強其安全性並提高其效能跨不同資料庫系統的可移植性。

以上是如何在 PHP 中將 MySQLi 語句轉換為 PDO?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn