mysql:7906
From: IWASAKI Dai <IWASAKI Dai <dai@xxxxxxxxxx>>
Date: Mon, 16 Jun 2003 18:12:53 +0900
Subject: [mysql 07906] Re: クォーテーションのある文字列の登録
いわさきです。 At Mon, 16 Jun 2003 17:57:34 +0900, Shinichi Nouzumi wrote: > > > $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); を実行したあとなんですけど。 > そうですか・・・。 > 現在は、mysql_escape_string 関数を使わず > > "UPDATE usertbl SET name = '能銀"' > > とそのまま文字列を渡しても正しく登録されるので > この関数を使っていません。 ええと、なんで mysql_escape_string のようなエスケープを する関数が用意されているのかを考えてもらうと、そのやりかた だとセキュリティホールが生ずる可能性があるので、避けた ほうがよろしいかと。 # SQLインジェクションなど --- To infinity and beyond... いわさきだい <dai@xxxxxxxxxx>
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]