みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでMySQLのMEDIUMBLOB型のデータを取り出す

初めまして、宜しくお願いします。
現在ユーザ登録の管理をするデータベースを扱っています。
言語はPHP4と、MySQLを使用しています。

そのデータベースには、アイコン画像、登録者名、性別、
掲示板発言回数などのユーザー情報が保存されており、
データ型[MEDIUMBLOB]にまとめて保存されているようです。
(データベースは私が作成したものではいのですが)

なのでそこから、それらの情報を取り出したいのですが、
[MEDIUMBLOB]型のデータの取り出し方が解らず困っています。
具体的にはデータだけならば取り出す事はできるものの、
バイナリ形式なので当然文字化けしているという感じです。

勉強不足ということは百も承知ですが、検索しても
それらしい情報を見つけることもできず、ご存じの方が
おられないかとこちらにて質問をさせていただきました。
お解りの方がおられましたらどうかアドバイスを
宜しくお願い致します。


--------------------------
// 以下のようなテーブルにデータが格納されていた場合
CREATE TABLE sample(
  test_i INT,
  test_s VARCHAR(64),
  medium MEDIUMBLOB
);

// 格納されているデータを取り出す
$res = mysql_query( "SELECT test_i, medium FROM sample;" );
while( $list = mysql_fetch_assoc( $res ) ){
  echo "$list['test_i']<br>";
 //echo "$list['medium']<br>";
}

上記の通りをMEDIUMBLOB型ですると文字化けします。

投稿日時 - 2008-05-12 20:21:30

QNo.4017386

困ってます

質問者が選んだベストアンサー

>ということは、データ構造というものは聞いてないので、
>どうしようもないということでしょうか……。
>ただデータベースを渡されただけなので。

構造が提示されていなければ「解析込み」での作業ということになります。私なら請けたくないです(汗

データを文字列で取り出して「そのまま」ファイルに書き出す・・というのを複数のレコードについて実施して、各ファイルをローカルにFTPしてからバイナリダンプして見当をつけないといけませんね。先頭の方にある(と思われる)テキストはどうにか切り出せるかもしれません。

画像などのバイナリは、バイナリのままだとするとバイト長のデータが書き込まれているとは思います(これ自体がinteger形式のバイナリかも)。あるいはMIMEにしてから入れていれば、「NULL区切り」とか「タブ区切り」ということもあるかもしれません。内容を見ながら追っていくしかないです。

投稿日時 - 2008-05-13 10:28:11

お礼

なるほど…PHPもしくはMySQLから何とかできる方法が
あるのではないかと思ったのですが、
そういうのは決まってないんですね(汗)
というか既に格納されてるならどうやって格納したのかも送ってくれればいいのに…

アドバイスいただいたとおり、時間は余裕は無いですが幾分かありますし、
画像もサイズらしき情報がありましたので
解析しつつ何とかバイナリダンプして試してみたいと思います。

とても参考になりました。有難う御座います。

投稿日時 - 2008-05-13 12:11:35

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>そのデータベースには、アイコン画像、登録者名、性別、
>掲示板発言回数などのユーザー情報が保存されており、
>データ型[MEDIUMBLOB]にまとめて保存されているようです。

どういう定義になっているかわからないと取り出しようがないです。とりあえずいったん文字列で取り出したとして、それ以降の分割をどうするかはデータ構造次第です。

投稿日時 - 2008-05-12 20:53:11

補足

ご回答いただきましてありがとうございます!

ということは、データ構造というものは聞いてないので、
どうしようもないということでしょうか……。
ただデータベースを渡されただけなので。

データベースの中身を見ると、
ユーザ名:sample/年齢:20/性別:男 ならば
username-?sample・ageU・20- sex-・0image-・(以下省略)
といった感じで、ユーザ名ならばusername、年齢ならばageと、
一部文字化けはしていますが取り出す事のできそうなデータの
キーとなりそうなものは見つけることができます。
これではどうにもならないですよね?

投稿日時 - 2008-05-13 10:02:29

あなたにオススメの質問