• ベストアンサー

form の TEXT で " がはいると切れてしまう。 

PHPからMySQLにデータを格納しようとしているのですが、 Form の TEXTで、たとえば 12" WHITE PAPER ROLL と入れると、"の後が切れてしまうのです。 何か設定があるのでしょうか? 格納は、SHIFT-JIS で書き込みを行っています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#57710
noname#57710
回答No.3

phpにaddslashesという関数があります http://jp.php.net/manual/ja/function.addslashes.php これをinsert前に該当文字列に当てるとエスケープしてくれます。 ただし、SQLではシングルクォーテーションのエスケープは「\'」ではなく「''」なので、別途変換する必要があります。(str_replaceなどで) 当然、そのデータをフェッチしてくると変換されたままなので今度はstripslashesをかます必要があります。 http://jp.php.net/manual/ja/function.stripslashes.php (今度はstripslashes前に「''」を「\'」に変換する必要もあります)

gomainfo
質問者

お礼

ありがとうございます。 早速、試してみます。 また分からないことがありましたら、よろしくお願いします。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

ダブルクォーテーションまでが文字列と認識され それ以降が無視されているのではないかと思います。 エスケープ文字(バックスラッシュまたは円サイン) でエスケープすれば大丈夫だと思います。 12\" WHITE PAPER ROLL

noname#20378
noname#20378
回答No.1

SQLもPHPも扱ったことないので自信はありませんが SQLインジェクションとかいうやつではないでしょうか? http://www.atmarkit.co.jp/fsecurity/rensai/webhole02/webhole01.html

関連するQ&A