응용 프로그램을 개발할 때는 그림 및 오디오와 같은 이진 파일이 종종 데이터베이스에 저장되어야합니다. PHP는 강력한 PDO (PHP 데이터 객체) 확장을 제공 하여이 작업을 안전하고 효율적으로 완료 할 수 있습니다. 이 기사는 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();
}
데이터베이스에 이미지 데이터를 저장하기위한 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";
이 기사에서는 PDO를 사용하여 읽기, 쓰기, 업데이트 및 삭제를 포함하여 실제 코드를 통해 데이터베이스에서 이진 데이터의 작동을 확장하는 전체 프로세스에 대해 설명합니다. 이러한 방법을 마스터하면 사진 라이브러리, 사용자 아바타 업로드, 오디오 및 비디오 관리 및 기타 시나리오와 같은 기능이 풍부한 데이터 중심 애플리케이션을보다 유연하게 빌드 할 수 있습니다.