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

mysql:7907

From: Shinichi Nouzumi <Shinichi Nouzumi <nouzumi03@xxxxxxxxxx>>
Date: Mon, 16 Jun 2003 18:32:26 +0900
Subject: [mysql 07907] Re: クォーテーションのある文字列の登録


> > > > $sql = sprintf("UPDATE usertbl SET name = '%s'",$sql);
> > > > 
> > > > この sql 文を実行したところ MySQL には、
> > > > 能銀\" と、\ 文字が付加されてしまいます。
> > > 
> > > PHP上で、ここでの$sqlを表示させてみてください。
> > 
> > $str = '能銀"';
> > echo mysql_escape_string($str);
> > 
> > とした場合、「能銀"」は正しく、クォートされ
> > 「能\銀\"」
> > と表示されています。
> 
> 一つの変数 $str しか使っていないので、混乱しますが、見たかったのは
>  $sql = sprintf("UPDATE usertbl SET name = '%s'",$sql);
> を実行したあとなんですけど。

すみません。コードも間違えていたようです。

$str = '能銀"';
$str =  mysql_escape_string($str);
$sql = sprintf("UPDATE usertbl SET name = '%s'",$str);
echo $sql;

とした場合、表示は

UPDATE usertbl SET name = '能\銀\"'

となります。

> ええと、なんで mysql_escape_string のようなエスケープを
> する関数が用意されているのかを考えてもらうと、そのやりかた
> だとセキュリティホールが生ずる可能性があるので、避けた
> ほうがよろしいかと。
> # SQLインジェクションなど

PHP のマニュアルに書いてあったのですが、
やっぱりそうですか・・・。
mysql_escape_string を使わず、addSlashes を利用しても、
同様の結果です。
やはり、PHP 側の問題かな・・・。
ありがとうございました。

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

      7899 2003-06-14 12:15 [Shinichi Nouzumi <no] クォーテーションのある文字列の登録      
      7903 2003-06-16 16:09 ┗[IWASAKI Dai <dai@xxx]                                       
      7905 2003-06-16 17:57  ┗[Shinichi Nouzumi <no]                                     
      7906 2003-06-16 18:12   ┗[IWASAKI Dai <dai@xxx]                                   
->    7907 2003-06-16 18:32    ┗[Shinichi Nouzumi <no]