在PDO中使用ON DUPLICATE KEY UPDATE

时间:2015-08-07 08:25:27

标签: php mysql sql pdo

如何在PDO中使用ON DUPLICATE KEY UPDATE

我的问题是我得到(SQLSTATE [42000]:语法错误或访问冲突?)当我尝试以下synthaxe时,插入函数和更新工作正常,但是当我同时使用它们时,我得到错误:

    $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();

1 个答案:

答案 0 :(得分:0)

我找到了解决方案here。 我的问题是在where子句中,你不需要将表名或SET放在ON DUPLICATE KEY子句中,而且你不需要WHERE子句(它总是用重复键更新记录) )。