[PHP-users 1561] addslashes関数でエンコード
php-users@php.gr.jp
php-users@php.gr.jp
Mon, 27 Aug 2001 22:18:24 +0900
たけです。ご無沙汰しています。
環境
PHP4.05+jstring
MySQL 3.23.39
magic_quotes_gpc=off
magic_quotes_runtime=off
magic_quotes_sybase=off
以下のようにaddslashes関数でエンコードしてSQL文を作って
データベースにデータをしまっているのですが、、
$amei="椎名林檎";
$mmei="本能";
とした場合
$en_amei=addslashes($amei);
$en_mmei=addslashes($mmei);
$query="INSERT INTO melo_table (amei,mmei) VALUES('$en_amei','$en_mmei')";
$result = mysql_query($query);
つまり
$query="INSERT INTO melo_table (amei,mmei) VALUES('椎名林檎','本能\')"
となってしまって1064: You have an error in your SQL syntax near ・・・・
のエラーになってしまいます。
'本能\' の部分で\で'が無効化されてしまっているからだと思うのですが、
私の今までの認識では、addslashesは
$amei="B'z";
$en_amei=addslashes($amei);
つまり
$en_amei="B\'z";
のようにSQL文で'
$query="INSERT INTO melo_table (amei,mmei) VALUES('B'z','$en_mmei')";
のようにならないようにする為の関数だと思っていたのですが、
どのような場合に「本能\」のように、エンコード後の最後に\がついてしまうのでしょうか?
このような場合を考慮する為にはどのように対処したらよいのでしょうか?
ご教授いただけないでしょうか?
よろしくお願いいたします
J-SKY研究所
http://www.j-ken.ne.jp
j-ken/take <take@j-ken.com>