質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

2592閲覧

DBから画像データのSelect

RyotaOgiyama

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2017/01/18 04:08

編集2017/01/18 05:07

現在Blob型のimgカラムにbase64で画像データを格納しています。
このデータをSelect文で取得すると
格納されているデータと取得したデータに差異が見られ画像を表示できませんでした。

どうやら文字列の頭と末尾付近は合っていそうなのですが、データサイズがかなり異なっているため中ほどのデータが欠損しているのではないかと思われます。

それを解決する方法が思いつかないのですが何か方法はあるのでしょうか?

php

1$query = "SELECT id,img FROM table WHERE id=$id"; 2$stmt = $pdo->prepare($query); 3$stmt->execute(); 4$rows = array(); 5while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 6 $rows[] = $row; 7} 8echo (json_encode($rows));

javascript

1$.ajax({ 2 type: "POST", 3 url: "***.php", 4 data: data, 5 success: function(data, dataType){ 6 data = eval(data); 7 $('#img').css('background-image','url('+data[0].img+')'); 8 } 9});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

画像を表示できないとありますが、そもそも複数データを受けるように
配列を利用してますから、ajaxで受けても画像としては
表示できないですよね?
あえてやるならbase64dでエンコードして以下のように処理するとか
(配列でうけとってるならループして取り出す)

print '<img src="data:images/jpeg;base64,'.base64_encode($img).'" />';

投稿2017/01/18 04:57

yambejp

総合スコア114819

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyotaOgiyama

2017/01/18 05:02

画像表示までのコードは見せていませんが 表示させる際には配列の要素のみ取っていますよ
yambejp

2017/01/18 05:06

なるほど、ではimgの表示方法も私の指示したとおりやられているということですか?
RyotaOgiyama

2017/01/18 05:08

imgの表示はjqueyを使ってbackground-imageのurlを変更する手順で行っています。
yambejp

2017/01/18 05:13

>background-imageのurlを変更する urlを変更するとなると画像ローダーのような仕組みでurlを 指定する必要があるのでは? なぜajaxでデータを受け取っているかわかりません。 imgload.php?id=1 的なurl指定をして、画像が呼び出されるようにしたほうが 効率的だと思いますが
RyotaOgiyama

2017/01/18 05:20

data:image/png;base64,iVBOR...== みたいな形をURLにいれても表示されたのでこれを使っているのですが。。。 ajaxを使う理由としてはGoogleMapと連携したものを作っており、リアルタイムでかつページ遷移はさせたくないのでajaxを使っています。
guest

0

ベストアンサー

MYSQLのBLOB型は最大で65,535バイトまでしか入りません。大きな画像を保存するならLONGBLOB型(4GB)にしてみてはどうでしょうか。というか、BLOBなのにbase64した文字列を保存する理由がよくわかりません。バイナリのまま入れれるのではないでしょうか?

投稿2017/01/18 04:12

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyotaOgiyama

2017/01/18 04:18

FileAPIというものをつかっているのですがどうやら勝手にbase64の形式になってしまうみたいでそのまま格納しています。 バイナリに変換してから格納したほうがいいでしょうか? それとデータそのものはしっかりDBに入っていてphpmyadminでbinファイルを取得しブラウザで確認しましたが、きちんと表示されます
masaya_ohashi

2017/01/18 04:22

ちょっと質問を勘違いしていたようです。SELECT実行あたりのコードも質問文に追記したらなにかわかるかもしれません。
RyotaOgiyama

2017/01/18 04:29

Select文追記いたしました。
masaya_ohashi

2017/01/18 04:31

あー、SQLだけじゃなく、そのあとimgを受け取っているコードの方も書いてください。
RyotaOgiyama

2017/01/18 04:40

知識は浅いので見当違いなことを書いていたらすいません。 ajax通信で情報を受け取っています。
masaya_ohashi

2017/01/18 05:53

javascriptからではなく、phpに直接アクセスした場合に得られるデータのimgに格納された文字列は正しいですか?
namimon

2017/01/18 06:07

echo $row["img"]; で正しい画像は表示されますか?
RyotaOgiyama

2017/01/18 06:33

しょうもないことに配列に文字列操作をしており’+’を消していたため出なかったようです。。。 お騒がせしました(´・ω・`) データのサイズが違ったのは一体何だったのだろう。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問