[PHP-users 4197] Re: 不正なSQL になる危険性について

Y.Inoue php-users@php.gr.jp
Fri, 7 Dec 2001 14:01:51 +0900


井上です。

> ってな感じで、登録としているのですが、例えば、foo に ' が含まれたりする
と、
>     INSERT INTO bar(foo) VALUES(''');
> 見たいにおかしなことになりますよね?

$sth = $dbh->prepare("INSERT INTO foo VALUES(?)");
$db->execute($sth, $foo);
などとすれば、PEARがエスケープしてくれます。
return str_replace("'", "\'", $string);
でエスケープしているようです。

PEARのDBについては、
http://vulcanonet.com/soft/?pack=pear_tut
が参考になりました。

addslashesを使うのであれば、
$sql = sprintf("INSERT INTO bar(foo) VALUES('%s')", addslashes($foo));
とすると、みやすくなります。

知っていると思いますが、SJISですと、表\示などとなってしまう
ことにも気をつけてくださいね。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 立命館大学 理工学部 
       情報学科  2回生   井上 陽平
              inohei@ma.nasicnet.com
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/