【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; }
コメント