画像(をはじめとするバイナリデータ,以下,画像)を管理するようなアプリケーション (というほと大げさではありませんが) を設計するときには,情報 (MIME タイプとかデータサイズとか) のみをデータベース(以下,DB) に格納し,データはファイルとして特定の場所へ保存する,といった方法を,今までとってきました.
この場合,管理するべき場所が 2か所あるわけですが,そんな管理がだんだんと手間に思えてきたので,管理をひとまとめにすべく,画像データを DB に格納する練習をしてみました.
まずは通常どおりの INSERT 文で実行してみます.
1 2 3 4 5 6 | use DBI; $img = <読み込んだ画像データ>; $dbh = DBI->connect( ... ); # MySQL に接続 $sql = qq{INSERT INTO hoge ( id, name, content ) VALUES ( 1, 'img', '$img' );}; $sth = $dbh->prepare( $sql ); $sth->execute(); |
怒られました.
メッセージの内容から,バイナリデータ ($img) の中にシングルクォートに対応するコードが入っているため,SQL 文が不正となってしまう,ということはわかりましたが,しばらくそこから進めませんでした.
で,調べてみたところ,いくつか気になる記事・ページがありました.
これらによると,Perl + DBI な環境では “プレースホルダ (placeholder)” なるものを使うことで解決できるようです.今まで,ほぼ唯一参考にしていた MySQLクイックリファレンス では触れられていなかった (もしくは単なる見落としか) ので,ひとつ勉強になりました.
プレースホルダを使った場合,先のコードは次のように直せます.
1 2 3 4 5 6 | use DBI; $img = <読み込んだ画像データ>; $dbh = DBI->connect( ... ); # MySQL に接続 $sql = qq{INSERT INTO hoge ( id, name, content ) VALUES ( ?, ?, ? );}; $sth = $dbh->prepare( $sql ); $sth->execute( 1, 'img', $img ); |
実行後,無事に格納できました.SELECT 文で問題なく取得することもできました.
画像等の管理の一元化に向けて一歩前進です.
本日の一語: 一元化
(名)スル
ばらばらであった組織や機構を一つの中心体のもとに統一すること。
いちげん-か ―くわ 0 【一元化】 – goo 辞書
そうするべきかそのままにしておくべきか.悩むところです.
最近の閲覧数
- [emacs] インデントをハイライトしてくれる「Highlighting indentation」で脱・インデント迷子
- IRC初心者がIRCを通知ツールとして使ってみる,または個人的IRC環境のメモ
- UbuntuとCentOSとにおけるlogrotateの挙動の違いでハマった
- aquaさんで開通間近の新東名高速道路を走ってきた
- Textile記法で手軽にWikiっぽく記録を残しておくツール「SiTeWiki」を作ってみた
- 「GTDme」というオレオレGTDツールを作って使い始めようとしています
- [git][perl] rebase祭りを支援するツール「git-rebase-matsuri」というのを書いてみた
- [perl] Cache::FileCacheが保存するファイルの中身を覗いてみるメモ
- Kansai.pm #14 へおジャマさせていただいてきた
- HTTPSとバックエンドなPlackアプリケーションとPlack::Middleware::ReverseProxyとHTTPヘッダ「X-Forwarded-HTTPS」と
最近のエントリ
- [perl] Image::Sizeで画像サイズを取得できないことがある件とその(アドホックな)対処方法
- 5月連休とaquaさん
- [perl][php] Textile記法+GeSHiでシンタックスハイライトするためのText::Textile::Pluggableプラグインを書いてみた
- [perl] Markdown記法をプラグインっぽく拡張できる「Text::Markdown::Pluggable」というモジュールを書いてみた
- [perl] Textile記法をプラグインっぽく拡張できる「Text::Textile::Pluggable」というモジュールを書いてみた
- aquaさんで入鹿池を2周してきた(約2年ぶり2回目)
- aquaさんで山崎川とか天白川とかの桜を眺めてきた(おまけで豊橋少々)
- サイクルショップカワタさんなツーリング@奈良
- 「魔法少女まどか☆マギカ展 名古屋会場」の写真いくつか
- Kyoto.pm #1に参加 & LTに飛び入らせていただいてきた
カテゴリー
タグ
-
actionscript
amon2
announce
bicycle
bookmarklet
cafe
cooking
cpan
della.js
dqwindowmanager
eating
elisp
emacs
event
gps
gtd
html
http
image
iphone
javascript
lifelog
linux
mac
mono
music
mylifehacks
mysql
mywebservice
neko
nicograph
onomichi
pc
perl
photo
plack
study
svn
tool
travel
twitomonitor
twitter
wcan
windows
wordpress
最近のコメント
-
No Responses.
最近のトラックバック
-
No Responses.
