前提
PHP+MySQLでシステム制作中です。
エラーが解決できずご質問させて頂きます。
実現したいこと
フォームから受け取った値を、SQLテーブルに書き込み。
(所謂、「あればUPDATE、無ければINSERT」)
発生している問題・エラーメッセージ
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '),flag_ng = values(),flag_mail = values(),flag_del = values()' at line 4
該当のソースコード
// (3) SQL構文 $sql_redirect_update = "INSERT INTO tbl_redirect ( timestamp, code, reg_user, original_url, output_url, flag_ng, flag_mail, flag_del ) VALUES (:timestamp, :code, :reg_user, :original_url, :output_url, :flag_ng, :flag_mail, :flag_del ) ON DUPLICATE KEY UPDATE original_url = values({$_POST["original_url"]}),flag_ng = values({$_POST["flag_ng"]}),flag_mail = values({$_POST["flag_mail"]}),flag_del = values({$_POST["flag_del"]});"; echo $sql_redirect_update; $stmt = $pdo->prepare($sql_redirect_update); // (4) 登録するデータをセット $stmt->bindValue( ':timestamp', date("Y-m-d hh:mm:ss"), PDO::PARAM_STR); $stmt->bindValue( ':reg_user', $_SESSION["name"], PDO::PARAM_STR); $stmt->bindValue( ':original_url', $_POST["original_url"], PDO::PARAM_STR); $stmt->bindValue( ':output_url', $redirect_output_url, PDO::PARAM_STR); $stmt->bindValue( ':flag_ng', $_POST["flag_ng"], PDO::PARAM_STR); $stmt->bindValue( ':flag_mail', $_POST["flag_mail"], PDO::PARAM_STR); $stmt->bindValue( ':flag_del', $_POST["flag_del"], PDO::PARAM_STR); // (5) SQL実行 $res = $stmt->execute(); // (6) データベースの接続解除 $pdo = null;