使用MySQL PDO進行PHP開發

一、PDO簡介

PDO(PHP Data Objects)是PHP的一個輕量級的、通用的數據訪問層,它提供了一個統一的接口來訪問不同類型的數據庫。與之前常用的mysql_*函數和mysqli_*函數相比,PDO具備更好的安全性、更好的性能,並且支持更廣泛的數據庫類型,包括MySQL、SQLite、Oracle、PostgreSQL等。

使用PDO連接MySQL數據庫需要以下參數:
– 數據庫主機名
– 數據庫名稱
– 數據庫用戶名
– 數據庫用戶密碼

二、PDO連接MySQL數據庫

下面是一個PDO連接MySQL數據庫的代碼示例:

try {
    // 數據庫信息
    $host = 'localhost';
    $dbname = 'testdb';
    $user = 'testuser';
    $pass = 'testpass';

    // 連接數據庫
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    // 設置錯誤模式為拋出異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo '連接數據庫失敗:' . $e->getMessage();
}

這段代碼嘗試連接名為testdb的MySQL數據庫,並且將錯誤模式設置為拋出異常。如果連接失敗,將輸出錯誤信息。

三、PDO查詢數據

在PDO中,查詢數據需要執行SQL語句,並且通過PDOStatement對象獲取查詢結果。下面是一個PDO查詢數據的代碼示例:

try {
    // 數據庫信息
    $host = 'localhost';
    $dbname = 'testdb';
    $user = 'testuser';
    $pass = 'testpass';

    // 連接數據庫
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    // 設置錯誤模式為拋出異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 查詢數據
    $stmt = $pdo->query('SELECT name, age, gender FROM users');
    // 獲取查詢結果
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 輸出查詢結果
    foreach ($result as $row) {
        echo "{$row['name']}, {$row['age']}, {$row['gender']}\n";
    }
} catch (PDOException $e) {
    echo '查詢數據失敗:' . $e->getMessage();
}

這段代碼查詢名為users的表中的所有數據,並且通過PDOStatement對象的fetchAll方法獲取查詢結果,最後遍歷查詢結果輸出每行數據的name、age、gender字段。

四、PDO插入數據

在PDO中,插入數據需要執行SQL語句,並且通過PDOStatement對象獲取插入的行數。下面是一個PDO插入數據的代碼示例:

try {
    // 數據庫信息
    $host = 'localhost';
    $dbname = 'testdb';
    $user = 'testuser';
    $pass = 'testpass';

    // 連接數據庫
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    // 設置錯誤模式為拋出異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 插入數據
    $stmt = $pdo->prepare('INSERT INTO users (name, age, gender) VALUES (?, ?, ?)');
    $result = $stmt->execute(array('Tom', 18, 'male'));

    // 獲取插入的行數
    $count = $stmt->rowCount();
    echo "插入了 {$count} 行數據\n";
} catch (PDOException $e) {
    echo '插入數據失敗:' . $e->getMessage();
}

這段代碼插入一行數據到名為users的表中,並且通過PDOStatement對象的rowCount方法獲取插入的行數。

五、PDO更新數據

在PDO中,更新數據需要執行SQL語句,並且通過PDOStatement對象獲取更新的行數。下面是一個PDO更新數據的代碼示例:

try {
    // 數據庫信息
    $host = 'localhost';
    $dbname = 'testdb';
    $user = 'testuser';
    $pass = 'testpass';

    // 連接數據庫
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    // 設置錯誤模式為拋出異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 更新數據
    $stmt = $pdo->prepare('UPDATE users SET age = ? WHERE name = ?');
    $result = $stmt->execute(array(20, 'Tom'));

    // 獲取更新的行數
    $count = $stmt->rowCount();
    echo "更新了 {$count} 行數據\n";
} catch (PDOException $e) {
    echo '更新數據失敗:' . $e->getMessage();
}

這段代碼更新名為users的表中Tom的age字段為20,並且通過PDOStatement對象的rowCount方法獲取更新的行數。

六、PDO刪除數據

在PDO中,刪除數據需要執行SQL語句,並且通過PDOStatement對象獲取刪除的行數。下面是一個PDO刪除數據的代碼示例:

try {
    // 數據庫信息
    $host = 'localhost';
    $dbname = 'testdb';
    $user = 'testuser';
    $pass = 'testpass';

    // 連接數據庫
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    // 設置錯誤模式為拋出異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 刪除數據
    $stmt = $pdo->prepare('DELETE FROM users WHERE name = ?');
    $result = $stmt->execute(array('Tom'));

    // 獲取刪除的行數
    $count = $stmt->rowCount();
    echo "刪除了 {$count} 行數據\n";
} catch (PDOException $e) {
    echo '刪除數據失敗:' . $e->getMessage();
}

這段代碼刪除名為users的表中name字段為Tom的行,並且通過PDOStatement對象的rowCount方法獲取刪除的行數。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/196992.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 13:26
下一篇 2024-12-03 13:26

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27

發表回復

登錄後才能評論