首頁 > 資料庫 > mysql教程 > 為什麼要在 PHP 中用 PDO 取代 MySQL 函數?

為什麼要在 PHP 中用 PDO 取代 MySQL 函數?

Mary-Kate Olsen
發布: 2025-01-10 08:53:45
原創
743 人瀏覽過

Why Should I Replace MySQL Functions with PDO in PHP?

從 MySQL 函數轉換到 PHP 中的 PDO

PHP 的 MySQL 函數預計將被棄用並最終刪除。 為了確保未來的兼容性並利用增強的安全性和功能,開發人員應遷移到 PHP 資料物件 (PDO),這是一個強大的、物件導向的資料庫存取層。

PDO 的優點:

  • 現代化: PDO 以現代方法取代過時的 MySQL 函數。
  • 資料庫不可知論: PDO 提供了一個一致的介面來連接各種資料庫系統,而不僅僅是 MySQL。這簡化了資料庫切換並提高了程式碼可移植性。
  • SQL 注入預防: PDO 的準備語句對於防止 SQL 注入漏洞至關重要,這是一個主要的安全性問題。

使用 PDO 連接到資料庫

MySQL 連線:

<code class="language-php">$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>
登入後複製

MSSQL 連線:

<code class="language-php">$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>
登入後複製

使用準備好的語句執行查詢

PDO 利用準備好的語句來有效率且安全地執行查詢。 以下是綁定變數的方法:

命名參數:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = :username');
$statement->execute([':username' => 'example']);</code>
登入後複製

索引參數:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = ?');
$statement->execute(['example']);</code>
登入後複製

擷取查詢結果

多種方法有利於結果檢索:

  • fetch():以陣列形式傳回單行。
  • fetchAll():將所有行作為數組的陣列傳回。
  • rowCount():提供受影響的行數(對於 INSERT、UPDATE、DELETE 有用)。

PDO 連接類別範例

為了增強程式碼組織和可重複使用性,請考慮自訂 PDO 類別:

<code class="language-php">class MyPDO {
    public $dbh;

    public function __construct($dsn, $username, $password) {
        $this->dbh = new PDO($dsn, $username, $password);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function query($sql) {
        return $this->dbh->query($sql);
    }

    public function prepare($sql) {
        return $this->dbh->prepare($sql);
    }
}

// Example Usage:
$mypdo = new MyPDO($dsn, $username, $password);
$stmt = $mypdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->execute([':name' => 'example']);
while ($row = $stmt->fetch()) {
    echo $row['name'];
}</code>
登入後複製

以上是為什麼要在 PHP 中用 PDO 取代 MySQL 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板