[kansaipm] Re: Apache::Sessionで新規のセッションIDを指定できますか?

Tatsuhiko Miyagawa miyagawa at edge.co.jp
Tue May 21 05:49:47 CDT 2002


宮川です。

At Tue, 21 May 2002 18:52:54 +0900,
KAWAI,Takanori <GCD00051 at nifty.ne.jp> wrote:
> > Pgsql だとバイナリデータを入れる代わりに base64 en/decode していますよ
> > ね。これって本来は bind_param で型のタイプを指定すればバイナリでも問題
> > なく通るんじゃないかとおもうんですが。
> データをtextで持ってますから、ちょっと難しいかも。BYTEAじゃないと
> ヌル文字がダメだったような記憶があります。

なるほど、スキーマも変える必要がありますね。

> >   $sth = $dbh->prepare('INSERT INTO table VALUES (?, ?)');
> >   $sth->execute($text, $binary);
> >
> > としたときに $binary の方で ヌル文字がはいってるとかってこけちゃう、例
> > のヤツで、上記のとおり bind_param で型を指定すれば問題なくいきます。
> >
> > DBD::mysql だと型指定しなくても平気なんですが、これって DBD 側でなんと
> > かするものでもないんですかね? Class::DBI の自動生成するSQL も
> > placeholder つくって execute() するだけなので、バイナリが入れられない
> > ので、変えようとおもってるんですが。どうなんでしょう。
> DBDのほうで、ここにはバイナリが入るから、そうやってエスケープしよう
> ってことでしょうか?そのほうが親切だと思いますが、SQLの内容を
> 解析しないと出てこないでしょうし、難しいのではないでしょうか?

やっぱりそうなんでしょうね。MS SQL Server でも BIGINT 型を指定してあげ
ないと error になってしまったり。Class::DBI を作ってる人達が mysql で
ばっかり使っているようで(自分もそうなんですが)。DBD::mysql はその辺
に親切、というかどうもサーバ側でうまいこと処理してるので、bind_param 
指定しなくてもうまくいっちゃって、あまり気づかなかったということもある
みたいなんです。

# mysql ばっかりだと親切すぎてダメかも ;)


--
Tatsuhiko Miyagawa <miyagawa at edge.co.jp>





More information about the Kansai-pm mailing list