嵌套替换语句的语法错误

时间:2012-09-10 16:04:19

标签: php

我收到以下代码段的语法错误:

    $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.'\')';
    }

我确信我刚刚忘记了一些小事,但我似乎无法找出导致错误的原因。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您的语法错误来自您提供的代码段的第3行:该行的结尾',\''0', ''), '1', ''), '2', '')';导致问题,因为应该是SQL语句的一部分的单引号不是逃过一劫。而不是转义所有这些,而不是简单地使用双引号来包含该部分,如下所示:",''0', ''), '1', ''), '2', '')";

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