這篇文章主要介紹MySQL PHP PDO的基礎(chǔ)知識(shí)和使用,PHP PDO是PHP的一個(gè)數(shù)據(jù)庫擴(kuò)展,可以方便地通過PHP連接MySQL數(shù)據(jù)庫。
在使用PHP PDO之前,需要先了解什么是PDO和MySQL數(shù)據(jù)庫。PDO是PHP的數(shù)據(jù)庫連接抽象接口,它的作用是提供一種通用的API,用來連接各種類型的數(shù)據(jù)庫。MySQL則是一種關(guān)系型數(shù)據(jù)庫,非常流行,廣泛應(yīng)用于各種Web應(yīng)用中。
下面我們來看一個(gè)簡單的數(shù)據(jù)庫連接示例:
$host = 'localhost'; $dbName = 'my_database'; $username = 'my_username'; $password = 'my_password'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbName", $username, $password); } catch (PDOException $e) { echo $e->getMessage(); }
上面的代碼中,我們首先定義了MySQL的數(shù)據(jù)庫連接參數(shù),然后通過PDO類的構(gòu)造函數(shù)連接了數(shù)據(jù)庫。如果連接失敗,會(huì)拋出一個(gè)異常,并輸出異常信息。
接下來我們來看一下如何執(zhí)行SQL語句:
$sql = "SELECT username FROM users WHERE age >18"; $stmt = $pdo->query($sql); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($result as $row) { echo $row['username'] . '
'; }
上面的代碼中,我們使用query方法執(zhí)行了一個(gè)SELECT語句,并獲取了查詢結(jié)果。fetchAll方法將查詢結(jié)果轉(zhuǎn)換成一個(gè)關(guān)聯(lián)數(shù)組,我們可以通過foreach循環(huán)輸出每一條結(jié)果。
當(dāng)然,在實(shí)際開發(fā)中,我們經(jīng)常會(huì)需要執(zhí)行更加復(fù)雜的SQL語句,例如插入、更新、刪除等操作。下面是一個(gè)簡單的插入示例:
$username = 'Alice'; $age = 20; $sql = "INSERT INTO users (username, age) VALUES (:username, :age)"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':username', $username); $stmt->bindValue(':age', $age); $stmt->execute();
上面的代碼中,我們首先定義了需要插入的數(shù)據(jù),然后使用PDO的prepare方法,準(zhǔn)備了一個(gè)插入語句的PDOStatement對(duì)象,使用bindValue方法設(shè)置了需要插入的數(shù)據(jù),最后通過execute方法執(zhí)行插入操作。
最后,我們來看一下如何處理MySQL異常:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try { $pdo->beginTransaction(); // 一些需要執(zhí)行的SQL語句 $pdo->commit(); } catch (PDOException $e) { $pdo->rollBack(); echo $e->getMessage(); }
上面的代碼中,我們首先使用setAttribute方法設(shè)置了PDO的錯(cuò)誤處理模式為ERRMODE_EXCEPTION,這意味著當(dāng)有異常發(fā)生時(shí),PDO會(huì)拋出一個(gè)PDOExcetion異常。在執(zhí)行一系列數(shù)據(jù)庫操作時(shí),我們使用beginTransaction方法開啟一個(gè)事務(wù),然后在catch塊中使用rollBack方法回滾事務(wù),并輸出異常信息。
通過上面的代碼示例,我們可以看出,PHP PDO提供了非常方便的數(shù)據(jù)庫連接、查詢、插入、更新、刪除等操作,而且在異常處理方面也提供了很好的支持。