在開發應用程序時,常常需要將圖片、音頻等二進製文件存入數據庫,PHP 提供了強大的PDO(PHP Data Objects)擴展,可以安全高效地完成這項任務。本文將分步驟介紹如何通過PDO 連接數據庫,並實現二進制數據的讀取、寫入、更新和刪除操作。
使用PDO 與數據庫建立連接非常簡單,以下示例展示了連接MySQL 數據庫的基本方式:
$dsn = 'mysql:host=localhost;dbname=mydb';
$username = 'username';
$password = 'password';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected to database successfully";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
假設數據庫中有一個photos表,包含一個photo_data字段用於存儲圖片數據。以下代碼展示如何讀取該字段並輸出圖像內容:
$query = "SELECT photo_data FROM photos WHERE id = :id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$photoData = $result['photo_data'];
header('Content-Type: image/jpeg');
echo $photoData;
可以通過讀取文件的內容,並將其存入數據庫。以下示例展示如何將本地圖片寫入數據庫:
$photoData = file_get_contents('path/to/photo.jpg');
$query = "INSERT INTO photos (photo_data) VALUES (?)";
$stmt = $pdo->prepare($query);
$stmt->bindParam(1, $photoData, PDO::PARAM_LOB);
$stmt->execute();
echo "Photo data inserted into database successfully";
若需更新數據庫中已有的圖片數據,可以使用以下代碼完成操作:
$photoData = file_get_contents('path/to/new_photo.jpg');
$query = "UPDATE photos SET photo_data = ? WHERE id = ?";
$stmt = $pdo->prepare($query);
$stmt->bindParam(1, $photoData, PDO::PARAM_LOB);
$stmt->bindParam(2, $id);
$stmt->execute();
echo "Photo data updated successfully";
如果不再需要某條記錄的圖片數據,可以將其從數據庫中刪除:
$query = "DELETE FROM photos WHERE id = :id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':id', $id);
$stmt->execute();
echo "Photo data deleted successfully";
本文通過實際代碼講解了使用PHP 的PDO 擴展操作數據庫中的二進制數據的完整流程,包括讀取、寫入、更新與刪除。掌握這些方法可以幫助你更靈活地構建功能豐富的數據驅動型應用,如圖片庫、用戶頭像上傳、音視頻管理等場景。