[PHP-doc 764] addslashes() の修正提案
Norio Suzuki
suzuki @ tricorn.co.jp
2009年 1月 22日 (木) 20:03:44 JST
鈴木です。
addslashes の解説が、現在の状況と違うのでは?という指摘を頂きました。
------------------------------------------------------------------------
■指摘
http://wassr.jp/user/ikepyon/statuses/OV4zNcq5YK
> ほとんどのDBで「\」をエスケープ文字としてるんだっけ?
------------------------------------------------------------------------
------------------------------------------------------------------------
■マニュアル - addslashes
http://jp.php.net/manual/ja/function.addslashes.php
> ほとんどのデータベースでは O\'reilly という具合に \ を使用します。
------------------------------------------------------------------------
現在推奨されている方法としては、「addslashes は使わずに、各データベース
に合った形のエスケープを行う」というのが、モダンな PHP の書き方ではない
のかな、と思っています。
従って、次のような文面を提案したいと思うのですが、これについては、みな
さんいかがでしょうか?
------------------------------------------------------------------------
■修正提案
addslashes() の使用例は、 データベースにデータを登録するときです。例え
ば、 O'reilly という名前をデータベースに挿入するには、 エスケープする必
要があります。
しかし、現在ではこの関数を使うよりも、各データベースごとに用意されたエ
スケープ専用関数(例: MySQL なら mysql_real_escape_string() 、
PostgreSQLならpg_escape_string() など)を使用することが推奨されています。
この処理はデータベースにデータを格納する場合のみ必要です。 追加される
\ は挿入されません。 PHP のディレクティブ magic_quotes_sybase を \ にす
ると、' はもうひとつの ' でエスケープされます。
------------------------------------------------------------------------
ただ、この部分は、英文でも「Most databases do this with a \ which
would mean O\'reilly. 」と書かれているため、本家(?)の修正も必要そう
です。
英文については、どなたかのご協力をお願いしたく。。。
;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki @ tricorn.co.jp>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
;; Tel 03-5919-0041 Fax 03-5919-0042
PHP-doc メーリングリストの案内