[前][次][番号順一覧][スレッド一覧]

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]