mysqlに画像を保存するプログラム[php]
mysqlで画像扱うphpプログラムを作成しました。(動作確認済み
プログラムを扱う際のデータベースの設定も記述します。これで、mysqlで画像をバッチリ扱えるようになると思います。
プログラム内容
- 画像をデータベースに保存するプログラム
- データベースから画像を呼び出し、表示するプログラム
プログラムを利用するための設定
データベースの設定
ホスト名 | データベース名 | テーブル名 | ユーザ名 | パスワード |
---|---|---|---|---|
localhost | test_field | img_table | root | なし |
テーブルの設定
こんな内容のテーブルをphpMyAdminを使うなどして作成してください。
各カラムの役割 | id_col(画像の管理番号) | img_col(画像の格納) |
---|
ここで画像を保存する際にmediumblobを今回は用いていますが、データベースで扱う画像のサイズによってここは変える必要があります。
扱う画像のサイズと種別の対応表
種別 | 最大のサイズ |
---|---|
TINYBLOB | 256 byte |
BLOB | 64 KB |
MEDIUMBLOB | 16 MB |
LONGBLOB | 4 GB |
これで、データベースの設定は終わりです。次にプログラムを利用してみましょう。
プログラムの利用
set_img.php(画像をデータベースに保存するプログラム
<?php //データベースに接続する変数名を宣言しておく define( 'DB_HOST', 'localhost' ); define( 'DB_USER', 'root' ); define( 'DB_PASS', '' ); define( 'DB_NAME', 'test_field' ); //データベースに接続する $db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); //取得する画像のリンク $img_url = 'http://cdn-ak.f.st-hatena.com/images/fotolife/m/mekori/20130503/20130503074329.jpg'; // 画像の取得 $img_file = file_get_contents( $img_url ); //画像取得が成功した場合 if($img_file){ //画像をバイナリに変換 $img_binary = mysqli_real_escape_string( $db_link, $img_file ); //画像を保存するSQL文の実行 $result = mysqli_query( $db_link, 'INSERT INTO img_table (img_col) VALUES ( "'.$img_binary.'" )'); //結果の表示 if($result){echo "画像をデータベースに保存しました。";}else{ echo "保存できませんでした。"; } } ?>
view_img.php(データベースから画像を呼び出し表示するプログラム
<?php //データベースに接続する変数名を宣言しておく define( 'DB_HOST', 'localhost' ); define( 'DB_USER', 'root' ); define( 'DB_PASS', '' ); define( 'DB_NAME', 'test_field' ); //下の2つの関数を使い、id_colが1の画像を表示する。 CallImg(1); //指定したid_colを持つ画像を表示する関数 function CallImg($id_col_num){ echo '<img src="'.ImgSearchDB($id_col_num).'">'; } //データベースから、指定したid_colを持つimageファイルを検索する関数。 function ImgSearchDB($id_col_num){ //データベースへ接続する $db_link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); //指定したidのimgを検索 $serch_query = mysqli_query($db_link,"SELECT * FROM `img_table` WHERE `id_col` ='".$id_col_num."'"); $row = mysqli_fetch_array($serch_query); header( 'Content-Type: image/jpeg' ); echo $row['img_col']; $close_flag = mysqli_close($db_link); } ?>