mysql:5325
From: "KAWAI,Takanori" <"KAWAI,Takanori" <GCD00051@xxxxxxxxxx>>
Date: Sat, 6 Apr 2002 08:19:44 +0900
Subject: [mysql 05325] Re: 画像ファイルのインサート
川合孝典です。 ----- Original Message ----- From: "Tybalt of Capulet" <ice-man@xxxxxxxxxx> To: <ml@xxxxxxxxxx> Sent: Friday, April 05, 2002 12:24 PM Subject: [mysql 05316] Re: 画像ファイルのインサート > 神崎です。 (中略) > addslashesを加えることにより解決しました。 > Perlの場合はこれらの処理をもしかしてCGI.pmがやってくれていたんですかね? どのようなコードを書いたのかわかりませんが、基本的にはありえない 話です。たまたま使ったデータに問題を起こすような文字が入っていなかったか、 何らかのエンコードされた値を取り出して、取り出したときに元に戻すような 操作をしているとかといったことでは?反対にCGI.pmを使ったら勝手に エスケープされているのでは、ファイルのアップロードのときに元に戻す 操作が必要ってことになりかねません。 > PHPの場合は自分でやらないとダメだったんですね。 PerlだろうがPHPだろうが、そのあたりは違いはないでしょう。 #最終的にはなんらかの形でMySQLにそのSQL文を渡すわけですし。 変数の値を利用する場合には特殊な文字(クォート文字だの\など)を エスケープするために、何らかの処理が必要と考えるべきでしょう。 バイナリの場合には問題が発生しやすいというだけで、普通の 文字列だからといってクォートが入っていないとは限りませんから。 Perlだったら my $hDb = DBI->connect('dbi:mysql:dbname=mysql;host=localhost', 'hogeusr', 'hogepass', {RaiseError=>1}) || die $DBI::errstr; my $sData = ''; my $i; for($i=0;$i<256;$i++) { $sData .= chr($i); } $hDb->do('REPLACE INTO tmp_img VALUES(?, ?)', undef, 'perl', $sData); あるいは my $sQ = $hDb->quote($sData); $hDb->do("REPLACE INTO tmp_img VALUES('perl2', $sQ)"); といった感じ。 PHPでは $sData1=addslashes($sData); mysql_query( "REPLACE INTO tmp_img (id,photoimg) VALUES ('php1','$sData1')"); echo "ERROR:", mysql_errno().": ".mysql_error(); $sData2=mysql_escape_string($sData); mysql_query( "REPLACE INTO tmp_img (id,photoimg) VALUES ('php2','$sData2')"); echo "ERROR:", mysql_errno().": ".mysql_error(); は両方ともうまくいっていくようです。 #PEARでどうなるか、までは知らない :-P =================================================== 川合 孝典 (Hippo2000) DBI日本語メーリングリスト管理人、Kansai.pm所属 kwitknr@xxxxxxxxxx GCD00051@xxxxxxxxxx http://member.nifty.ne.jp/hippo2000 http://www.hippo2000.info/ 「Perlを256倍使うための本 DBI編」 発売中 http://member.nifty.ne.jp/hippo2000/p256dbi/p256dbi.htm ===================================================
5313 2002-04-05 00:54 [Tybalt of Capulet <i] 画像ファイルのインサート 5314 2002-04-05 04:52 ┣["KAWAI,Takanori" <GC] 5315 2002-04-05 11:49 ┗["SADB MIYATSU" <mid@] 5316 2002-04-05 12:24 ┗[Tybalt of Capulet <i] -> 5325 2002-04-06 08:19 ┗["KAWAI,Takanori" <GC]