Php 在PDO中使用重复密钥更新

Php 在PDO中使用重复密钥更新,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,如何在PDO中的重复密钥更新中使用 我的问题是,当我尝试以下Synthex时,我得到了(SQLSTATE[42000]:语法错误还是访问冲突?),insert函数和update可以正常工作,但当我将两者都用于on duplicate时,我得到了错误: $query = "INSERT INTO my_table (name,tophtml,bothtml,lang,background_mode,redirhtml,bg_color) VALUES (:nam

如何在PDO中的重复密钥更新中使用

我的问题是,当我尝试以下Synthex时,我得到了(SQLSTATE[42000]:语法错误还是访问冲突?),insert函数和update可以正常工作,但当我将两者都用于on duplicate时,我得到了错误:

    $query = "INSERT INTO my_table (name,tophtml,bothtml,lang,background_mode,redirhtml,bg_color)
              VALUES (:name, :top_html, :bottom_html, :hs_language, :bg_style, :redirect_to, :bg_color )
              ON DUPLICATE KEY UPDATE
              tophtml= :top_html, bothtml= :bottom_html, lang= :hs_language, bg_color= :bg_color, redirhtml= :redirect_to, background_mode= :bg_style WHERE name=:name
             ";
    $request = $databaseStatus->connection->prepare($query);
    $request->bindParam(":name", $name, PDO::PARAM_STR);
    $request->bindParam(":top_html", $top_html, PDO::PARAM_STR);
    $request->bindParam(":bottom_html", $bottom_html, PDO::PARAM_STR);
    $request->bindParam(":bg_color", $bg_color, PDO::PARAM_STR);
    $request->bindParam(":redirect_to", $redirect_to, PDO::PARAM_STR);
    $request->bindParam(":hs_language", $hs_language, PDO::PARAM_STR);
    $request->bindParam(":bg_style", $bg_style, PDO::PARAM_STR);
    $request->execute();
我找到了解决办法。 我的问题出现在where子句中,您不需要在ON DUPLICATE KEY子句中放置表名或集合,也不需要where子句(它总是使用重复键更新记录)。

我找到了解决方案。 我的问题出现在where子句中,您不需要将表名或集合放在ON DUPLICATE KEY子句中,也不需要where子句(它总是使用重复键更新记录)