[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 メーリングリストの案内