画像関連

【PHP・MySQL】データベースに画像ファイルを保存・表示する方法  第3回「画像を保存する」

ここまでの記事はこちら
 

今回はデータベースに画像ファイルを保存していきます。

データベースを作成していない方はこちらから用意してください。
 


 

解説

データベースに接続

データベースへの接続は

  • 画像を保存する時
  • 画像を表示する時
  • 画像を削除する時

に必要になります。

何度も同じコードを書くのは面倒なので、functions.php というファイルにデータベース接続する関数を用意します。
 

functions.php という名前でファイルを作成して、以下のようにコードを書きます。

 

4行目

$param = 'mysql:dbname=my_image;host=localhost';

dbname はデータベース名、host はホスト名を設定します。

ホスト名は ローカル環境の場合は localhost にします。
レンタルサーバーなどを利用している場合は、お使いのサーバーに合わせて変更してください。
 

6行目

$pdo = new PDO($param, 'ユーザー名', 'パスワード');

ユーザー名とパスワードは、ご自身の MySQL の設定に合わせて変更してください。(phpMyAdmin 画面にログインする時のユーザ名とパスワードです。)

MAMP を使っていて、ユーザー名とパスワードの設定を行なっていない場合は root になっていると思います。
 

10行目

exit($e->getMessage());

データベースに接続できなかった場合は、エラーメッセージを表示させてプログラムを終了します。
 
 
 

画像を保存する

次に list.php を開いて、画像の保存していきましょう。

1~29行目を追加します。

 

データベースに接続する

2行目で先ほど作成した functions.php を読み込んで、4行目でデータベースに接続しています。
 
 

画像を保存する

6行目の if 文は

  • form から画像を POST された場合は画像を保存
  • POST でない場合は保存した画像を取得

という分岐になっています。
 

画像をフォームから POST すると、以下のデータを取得できます。

このデータを images テーブルに追加していきます。

保存が出来たら list.php にリダイレクトして完了です。(26・27行目)
 
 
 

データベースを確認する

ブラウザで list.php を開いて画像を保存してみましょう。

MySQL の管理画面を開いて、画像が保存されているか確認してください。


 

* 画像が保存できていない場合
コードを正しく書いているのに画像が保存できない場合は、以下の記事を参考に php.ini の設定を確認してください。

【PHP・MySQL】データベースに画像が登録できない?upload_max_filesize と post_max_size の変更方法MySQL データベースに画像などのファイルが登録できないときは、upload_max_filesize と post_max_size...

 
 
 

次に行うこと

次回はデータベースに保存した画像を表示していきます。

表示を確認するために、2~3枚の画像を保存しておいてください

第4回「画像を表示する」に進む
 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest
6 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
wsdhead
wsdhead
2 years ago

参考にさせて貰ってます。
ありがとう情報。感謝です。

KI
KI
1 year ago

めちゃくちゃ分かりやすいです!
”気づけばプロ並みPHP”の教科書やったあとで、そういえば投稿した画像データを特定ファイルからではなく、DBから表示するのはどうするのだろう?と思い、こちらにたどり着きました。

stranger28
stranger28
6 days ago

お世話になります。
PHPの初心者で,大変役に立ったページでありがたかったです。

zipファイルを展開,コードをアップロードして試運転してみたところ,
添付のような結果で,画像が表示されませんでした。。
DBには,データは正しくアップロードされており,DBの構造も解説どおりです。
どのような問題が考えられるか,ご教示いただければありがたく思います。

サイトは,value-server

display.jpg
6
0
この記事にコメントするx