builtin function

ビルトイン関数 - 詳細

Category: builtin_function/database

sql_escape()

SQL文字列のエスケープ処理を行う

関数

string sql_escape (  string $sTarget=null , array $aryAddTrans=null  )
SQL文字列のエスケープ処理を行う
パラメータ

第1引数: string $sTarget=null // エスケープする文字列
第2引数: array $aryAddTrans=null // 置換前=>置換後の連想配列
戻り値

string // エスケープした文字列
説明

※独自定数のDB_DBMS、DB_POSTGRES、DB_MYSQL、DB_SQLITE、DB_ORACLEを利用している。

試験的に第2引数を追加してみる。
注意:sql_escape_string()とsql_escape_numeric()の第2引数は効果が違うので注意すること!

第2引数を利用した例は以下の通り(両方とも仮に前方後方一致とする)。
利用した例)
WHERE shop_data.name LIKE \'%'. sql_escape($PostClass->get('search_word'), array('%'=>'\%', '_'=>'\_')). '%\''; // 外部からの手入力値を使う場合は"%"と"_"をエスケープさせる引数を追加する。
利用しない例)
WHERE shop_data.name LIKE '. sql_escape_string('%'. $PostClass->get('sel_area'). '%'); // データに"%"と"_"が含まれていないことが判明しているのならCSqlSを使う。

留意事項:strtr()やstr_replace()はマルチバイト対応関数ではないので、どこかで問題が出てくるかもしれない(今のトコ問題になったことはないが)。
もし今後文字化けなどが発生するようならmb_strtr()やmb_str_replace()を入れて試してみて欲しい。

005 - 2013/01/03 xirasaya: 定数の未定義時の再定義部分を削除。定数は既に定義済みであることを前提とする。万が一なかった場合もnoticeは発生するものの動くことは動くので。第1引数に初期値を追加。
004 - 2012/04/30 xirasaya: CSqlE()からsql_escape()に関数名を変更。
003 - 2012/04/26 xirasaya: 定数の名前変更。
002 - 2010/07/10 xirasaya:
001 - 2006/10/23 xirasaya: copy
ソースコード [表示]


[top]