スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Zend_DbではBYTEA型よりもTEXT型の方がよさげ

PostgreSQLに画像データを保存して表示したいと思い、バイナリを直接格納できるBYTEA型を使ってみたのですが、どうもZend_Dbと相性が悪くうまくいきませんでした。

BYTEA型の値をSELECTするとPHPでは「resource of stream」みたいな値で返ってきます。
こいつがくせもので、読むにはstream_get_contentsかfreadを使わなければならないのですが・・・BYTEA型の値の実体が配列らしく返ってくる値がすべて文字列で「Array」。1バイトたりともアクセスできないんですよ。

どうひねくりまわしてもダメそうだったので、DB側の型をTEXTにしてINSERTする時は「base64_encode()」、SELECTする時は「base64_decode()」にしました。
これで、あっさり動作。

ちなみにぐぐってみるとZend_DbやPDOを使わずnativeなPostgreSQLの関数を使えばできるらしいのですが、やっぱりDBニュートラルな関数がいいですね。PostgreSQLで作ってたのが突然MySQLになったという経験がありますが、Zend_Dbだったので全然平気でした。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。