0

次のコードスニペットで構文エラーが発生します:

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

小さなことを忘れてしまったのは確かですが、何が原因なのかわからないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

構文エラーは、指定したスニペットの3行',\''0', ''), '1', ''), '2', '')';目から発生します。SQLステートメントの一部であると想定される一重引用符がエスケープされていないため、その行の終わり、が問題の原因になっています。それらすべてをエスケープするのではなく、次のように、代わりに二重引用符を使用してその部分を含める方がはるかに簡単です。",''0', ''), '1', ''), '2', '')";

また、現在のコードはSQLインジェクションの影響を非常に受けやすくなっています。

于 2012-09-10T16:09:13.267 に答える