バッチ処理のエスケープ中に何度通ってもゼロが消滅していくと思ったら・・。if文とごちゃ混ぜになったswitchの使い方に注目。
$param = 0;
switch($param){
case $param==='NULL':
$search = array("'/+{$k}+/'", "/+{$k}+/");
$replace = NULL;
break;
default:
$search = "/+{$k}+/";
$replace = mysql_real_escape_string($param, $link);
}
$sql = str_replace($search, $replace, $sql);
もうちょっと前後がみたいです。