首頁 >資料庫 >mysql教程 >如何從已棄用的 MySQL 函式遷移到 PDO for MySQL 和 MSSQL?

如何從已棄用的 MySQL 函式遷移到 PDO for MySQL 和 MSSQL?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-10 09:33:42458瀏覽

How to Migrate from Deprecated MySQL Functions to PDO for MySQL and MSSQL?

將 MySQL 函式轉換為適用於 MySQL 和 MSSQL 的 PDO

MySQL 函數的棄用與替代方案

MySQL 函數擴充功能已棄用,將在未來版本中移除。建議使用 MySQLi 或 PDO_MySQL 擴充功能作為替代。與 MySQL 函數相比,MySQLi 和 PDO 提供了改進的安全性和功能。

實作 PDO

PDO (PHP Data Objects) 是用於存取資料庫的物件導向的 API。若要使用 PDO 連線到資料庫,請使用 PDO 建構函式建立新的 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 執行查詢

PDO 使用預處理語句來防止 SQL 注入漏洞。預處理語句定義了一個具有命名或索引佔位符的 SQL 查詢,用於表示變數。

<code class="language-php">$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$preparedStatement = $dbh->prepare($SQL);</code>

綁定變數

使用 bindParambindValue 將值綁定到預處理語句。

<code class="language-php">$preparedStatement->bindParam(':username', $username);</code>

執行查詢

執行預處理語句以取得結果。

<code class="language-php">$preparedStatement->execute();</code>

取得結果

PDO 提供了 fetchfetchAll 等方法,可以將結果作為陣列檢索。

<code class="language-php">while ($row = $preparedStatement->fetch()) {
    echo $row['ID'];
    echo $row['EMAIL'];
}</code>

使用 PDO 連接類別

您可以建立一個 PDO 連線類別來簡化資料庫操作。

<code class="language-php">class Database {

    protected $connection;

    public function __construct($dsn, $user, $password) {
        $this->connection = new PDO($dsn, $user, $password);
    }

    public function query($SQL) {
        return $this->connection->query($SQL);
    }

    public function prepare($SQL, $params = []) {
        $preparedStatement = $this->connection->prepare($SQL);
        $preparedStatement->execute($params);
        return $preparedStatement;
    }

}

// 使用方法:
$db = new Database($dsn, $user, $password);

$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$result = $db->prepare($SQL, ['username' => $username]);

while ($row = $result->fetch()) {
    echo $row['ID'];
    echo $row['EMAIL'];
}</code>

以上是如何從已棄用的 MySQL 函式遷移到 PDO for MySQL 和 MSSQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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