SQL 替换或插入语法错误

SQL Replace or Insert Into Syntax error

我不知道哪里出了问题。我的查询如下所示:

INSERT OR REPLACE INTO lang (name, string, lang) VALUES ('PAGE_TITLE', 'Page Title', 'en')

这是我执行查询的地方:

foreach($lang_fields as $field){
    $update = "INSERT OR REPLACE INTO lang (name, string, lang) 
            VALUES ('".mysqli_real_escape_string($conn, $field)."', 
                    '".mysqli_real_escape_string($conn, $_POST[$field])."', 
                    '".mysqli_real_escape_string($conn, $_POST['lang_load'])."')";
    echo $update;
    $sql = mysqli_query($conn, $update)
        or die(mysqli_error($conn));
}

这是错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR REPLACE INTO lang (name, string, lang) VALUES ('PAGE_TITLE', 'P' at line 1

MySQL 不支持我见过的任何 INSERT OR REPLACE INTO 语法。您可能正在寻找类似 INSERT INTO ... ON DUPLICATE KEY UPDATE 的内容。在您的示例中,它可能如下所示:

INSERT INTO myTable (name, string, lang) VALUES (param1, param2, param3)
ON DUPLICATE KEY UPDATE name = param1, string = param2, lang = param3;

可以在此处的文档中找到更多信息:https://dev.mysql.com/doc/refman/5.0/en/insert.html

可以使用 SQL Fiddle.

找到这方面的示例