從 MySQL 函數轉換到 PHP 中的 PDO
PHP 的 MySQL 函數預計將被棄用並最終刪除。 為了確保未來的兼容性並利用增強的安全性和功能,開發人員應遷移到 PHP 資料物件 (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 利用準備好的語句來有效率且安全地執行查詢。 以下是綁定變數的方法:
命名參數:
<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中文網其他相關文章!