PHP PDOを使用して画像をSQLデータベースにアップロードする方法


方法1: BLOBデータ型を使用する方法

  1. データベースに画像を保存するためのテーブルを作成します。テーブルには、ID、画像の名前、および画像データを保存するためのBLOBカラムが含まれます。
CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    image BLOB
);
  1. アップロードされた画像を準備します。画像はフォームなどから受け取るものとします。
$imageName = $_FILES['image']['name'];
$imageData = file_get_contents($_FILES['image']['tmp_name']);
  1. プリペアドステートメントを使用して、画像をデータベースに挿入します。
$stmt = $pdo->prepare("INSERT INTO images (name, image) VALUES (?, ?)");
$stmt->bindParam(1, $imageName);
$stmt->bindParam(2, $imageData, PDO::PARAM_LOB);
$stmt->execute();

方法2: 画像のパスを保存する方法

  1. データベースに画像のパスを保存するためのテーブルを作成します。テーブルには、ID、画像の名前、および画像のパスを保存するためのVARCHARカラムが含まれます。
CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    path VARCHAR(255)
);
  1. アップロードされた画像を準備します。画像はフォームなどから受け取るものとします。
$imageName = $_FILES['image']['name'];
$imagePath = 'path/to/save/' . $imageName;
move_uploaded_file($_FILES['image']['tmp_name'], $imagePath);
  1. プリペアドステートメントを使用して、画像のパスをデータベースに挿入します。
$stmt = $pdo->prepare("INSERT INTO images (name, path) VALUES (?, ?)");
$stmt->bindParam(1, $imageName);
$stmt->bindParam(2, $imagePath);
$stmt->execute();

上記の方法は、画像をデータベースに直接保存する方法と、画像のパスを保存する方法の2つを示しています。どちらの方法を選択するかは、プロジェクトの要件や制約によります。