如何在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();
答案 0 :(得分:0)
我找到了解决方案here。 我的问题是在where子句中,你不需要将表名或SET放在ON DUPLICATE KEY子句中,而且你不需要WHERE子句(它总是用重复键更新记录) )。