PHP PDO介紹及應用
PHP PDO是PHP的數(shù)據(jù)庫抽象層,可用于連接不同類型的數(shù)據(jù)庫,如MySQL、Oracle、SQLite等,具有很高的可靠性和跨平臺性。PDO提供了一種面向對象的API以及預處理機制,更安全地執(zhí)行SQL語句,避免了SQL注入的風險。下面通過舉例說明PDO的應用。
連接數(shù)據(jù)庫
<?php $dsn = 'mysql:host=localhost;dbname=mydatabase;charset=utf8'; $username = 'root'; $password = 'mypassword'; try { $pdo = new PDO($dsn, $username, $password); } catch (PDOException $e) { die('Connection failed: ' . $e->getMessage()); } ?>
以上代碼連接了MySQL數(shù)據(jù)庫mydatabase,并指定字符集為utf8。
預處理語句
<?php $stmt = $pdo->prepare('SELECT * FROM users WHERE name = :name'); $stmt->execute(array('name' =>'John')); $results = $stmt->fetchAll(); ?>
以上代碼使用了PDO的預處理語句,先使用prepare方法準備SQL語句,再使用execute方法傳入?yún)?shù),最后使用fetchAll方法獲取結果。其中:name是命名占位符,可以使用冒號加任意字符來定義。
事務處理
<?php try { $pdo->beginTransaction(); $pdo->exec("INSERT INTO users(name, age) VALUES('Alice', 25)"); $pdo->exec("UPDATE users SET age = 26 WHERE name = 'Bob'"); $pdo->commit(); } catch (PDOException $e) { $pdo->rollBack(); die('Transaction failed: ' . $e->getMessage()); } ?>
以上代碼使用了PDO的事務處理功能,使用beginTransaction方法開始事務,然后執(zhí)行多個SQL語句,最后使用commit方法提交事務。如果出現(xiàn)異常,則使用rollBack方法回滾操作。
處理BLOB數(shù)據(jù)
<?php $stmt = $pdo->prepare("INSERT INTO images(name, data) VALUES(:name, :data)"); $name = "test.png"; $data = file_get_contents("test.png"); $stmt->bindParam(':name', $name); $stmt->bindParam(':data', $data, PDO::PARAM_LOB); $stmt->execute(); ?>
以上代碼演示了如何處理二進制大對象(BLOB)數(shù)據(jù),通過使用PDO::PARAM_LOB屬性將數(shù)據(jù)綁定到參數(shù)中。
參考文獻
- PHP: PDO - Manual
- PDO優(yōu)點和使用 - 阮一峰的網(wǎng)絡日志
- PHP PDO Tutorial: CRUD Example with MySQL - Koding Made Simple
- PDO::PARAM_LOB - Manual
上一篇php redius
下一篇php redis 阻塞