使用 PHP 的 PDO 進行資料庫操作:入門指南

本篇 ShengYu 介紹 PHP 和 PDO 進行資料庫操作用法,在 PHP 開發中,與資料庫進行互動是一個常見的需求。PDO(PHP Data Objects)是一個提供一致接口來訪問多種資料庫的擴展。PDO 使得處理不同資料庫(如 MySQL、PostgreSQL、SQLite 等)變得更加容易和一致。本文將介紹如何使用 PDO 進行基本的資料庫操作,包括連線資料庫、執行查詢、插入、更新和刪除資料。

什麼是 PDO?

PDO(PHP Data Objects)是一個物件導向的資料庫抽象層,旨在提高安全性和開發效率,同時提供一致的語法以支援多種資料庫。PDO 的功能和特點如下:

  1. 通用性強:PDO 支援多種資料庫系統,如 MySQL、MS SQL、ODBC、PostgreSQL、SQLite、Firebird、Informix 等。這意味著只要更換連線的資料庫驅動程式,程式碼無需更改即可適用於不同的資料庫系統。

  2. 語法一致性:無論 PHP 版本如何,PDO 的語法在所有支援的資料庫系統中都是一致的。這與 MySQL 驅動(如 mysqlmysqli)不同,後者在不同 PHP 版本中可能需要不同的語法。

  3. 物件導向設計:PDO 採用物件導向的設計,使得程式碼更具結構性和可讀性。物件導向的方式也更容易進行模組化和重用。

  4. 增強安全性:PDO 提供了預處理語句和參數化查詢,有效防止 SQL 注入攻擊。這些功能允許開發者安全地處理來自使用者輸入的資料,減少潛在的安全風險。

  5. 方便的資料操作:PDO 支援將查詢結果轉換為對應的 PHP 物件或陣列,使得資料操作更加方便和直觀。例如,使用 fetchObject() 方法可以直接將資料庫查詢結果轉換為 PHP 物件。

  6. 內建於 PHP 5.5 以上版本:從 PHP 5.5 開始,PDO 已內建於 PHP 核心,無需額外安裝。這使得 PDO 成為一個非常方便和強大的選擇。

綜上所述,PDO 是 PHP 開發中一個強大且靈活的資料庫操作工具。它不僅提供了跨資料庫的通用語法,還透過物件導向和安全性增強的設計,提高了開發效率和應用程式的安全性。

1. 建立 PDO 連線

首先,我們需要建立一個 PDO 物件來連線資料庫。這需要提供資料來源名稱(DSN)、使用者名和密碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
try {
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'password';

// 建立 PDO 連線
$pdo = new PDO($dsn, $username, $password);

// 設定 PDO 錯誤模式為異常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "連線成功";
} catch (PDOException $e) {
echo "連線失敗: " . $e->getMessage();
}
?>

這段程式碼中,我們建立了一個 PDO 實例並設定錯誤模式為異常,以便在出現錯誤時能夠更容易地進行除錯。

2. 執行 SQL 查詢

使用 query 方法

對於不需要參數的簡單查詢,我們可以使用 query 方法:

1
2
3
4
5
6
<?php
$sql = "SELECT * FROM users";
foreach ($pdo->query($sql) as $row) {
print_r($row);
}
?>

使用 prepareexecute 方法

對於需要參數的查詢,應使用 prepare 方法來防止 SQL 注入攻擊:

1
2
3
4
5
6
7
8
<?php
$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

print_r($user);
?>

3. 插入資料

使用 prepareexecute 方法插入資料:

1
2
3
4
5
6
7
<?php
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['username' => 'shengyu', 'email' => 'shengyu@example.com']);

echo "新記錄插入成功,ID: " . $pdo->lastInsertId();
?>

4. 更新資料

同樣地,可以使用 prepareexecute 方法更新資料:

1
2
3
4
5
6
7
<?php
$sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['email' => 'newemail@example.com', 'id' => 1]);

echo "記錄更新成功";
?>

5. 刪除資料

使用 prepareexecute 方法刪除資料:

1
2
3
4
5
6
7
<?php
$sql = "DELETE FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);

echo "記錄刪除成功";
?>

6. 關閉連線

在 PHP 中,當 PDO 物件被銷毀時,連線會自動關閉。因此,不需要顯式地關閉連線。

總結

PDO 提供了一個靈活且安全的方式來處理資料庫操作。透過使用 prepareexecute 方法,可以有效地防止 SQL 注入攻擊。PDO 的一致性和易用性使得它成為 PHP 開發人員處理資料庫操作的首選工具。

以上就是 PHP 和 PDO 進行資料庫操作的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 PHP 相關技術,可以參考看看下面的文章,
PHP 和 MySQLi 進行資料庫操作
PHP 執行發生錯誤在 Chrome/Firefox 上顯示 Error 500,要怎麼讓 PHP 顯示錯誤