簡介
PHP 的 mysql 擴充已棄用,將來會被刪除。作為替代方案,建議使用 PDO(PHP 資料物件)擴充功能來連接 MySQL 和其他資料庫。本文提供如何用 PDO 取代 mysql 函數的指南。
為什麼要轉換成 PDO?
連接到MySQL
$dsn = 'mysql:dbname=databasename;host=127.0.0.1'; $user = 'dbuser'; $password = 'dbpass'; $connection = new PDO($dsn, $user, $password); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
連接到MSSQL
$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename'; $user = 'dbuser'; $password = 'dbpass'; $connection = new PDO($dsn, $user, $password); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
執行查詢
PDO使用準備好的語句來避免SQL注入
$SQL = 'SELECT ID, EMAIL FROM users WHERE name = :username'; $stmt = $connection->prepare($SQL); $stmt->execute([':username' => 'someone']);
$SQL = 'SELECT ID, EMAIL FROM users WHERE name = ?'; $stmt = $connection->prepare($SQL); $stmt->execute(['someone']);
取得結果
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
範例類別
一個簡單的PDO連接類別封裝常用操作:
class PdoConnection { public function __construct($dsn, $user, $password, $options = []) { // ... initialize connection } public function query($sql) { // ... execute query and return result } public function prepare($sql, $params = []) { // ... execute prepared query and return result } }
以上是如何用 PDO 取代 MySQL 函數以提高安全性和效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!