【php】 SQL server 向けのエスケープ処理は?
問題
もし古いソースや既存のシステムなどで、SQL server向けのエスケープ処理に addslashes関数が使われていて、SQLにシングルクォーテーションを入れるとエラーになったり、バックスラッシュがバックスラッシュでエスケープされて増殖したりするのだが、SQL server向けのエスケープ処理ではないので直したいのだが、大幅に改修は難しいときどうしよう?
答え
これでいいのか?
//単純に、シングルクォーテーションをシングルクォーテーション2個にしてくれればよいだけ
function addslashes_mssql($x) {
return str_replace("'", "''", $x);
}
配列($_POSTなど)を渡してまとめてエスケープできるようにするなら、
function addslashes_mssql($x) {
if (is_array($x)) {
foreach($x as $k => $v) {
$x[$k] = addslashes_mssql($v);
}
} else {
$x = str_replace("'", "''", $x);
}
return $x;
}