嵌套替换语句出现语法错误


Syntax error with nested replace statements

以下代码片段出现语法错误:

    $handle = $table.'_'.$field;
    if($queryType=='replace') {
        $sql[$handle]['sql'] = 'UPDATE '.$table.' SET '.$field.' = replace(replace(replace('.$field.','''0', ''), '1', ''), '2', '')';
    } else {
        $sql[$handle]['sql'] = 'SELECT * FROM '.$table.' WHERE '.$field.' REGEXP('''.$search.''')';
    }

我确信我只是忘记了一些小东西,但我似乎找不出是什么导致了这个错误。

任何帮助都将不胜感激。

您的语法错误来自您提供的代码段的第3行:该行的末尾','''0', ''), '1', ''), '2', '')';导致了问题,因为本应是SQL语句一部分的单引号没有转义。与其全部转义,不如使用双引号来包含该部分,如下所示:",''0', ''), '1', ''), '2', '')";

此外,您当前的代码非常容易受到SQL注入的影响。