插入..ON重复密钥更新无法按预期工作


INSERT... ON DUPLICATE KEY UPDATE does not work as expected

这是我第一次使用insert。。一式两份,我有问题。我在重复更新时插入的操作并不像我预期的那样有效,例如,每次我尝试更新数据库中的表时,都会在数据库中插入一个新行,而不是按预期更新该行。很奇怪。我想知道是否有人会看一看,并传递你的看法。顺便说一下,我有一把唯一的钥匙。

  if (isset($_POST['update'])) {
        $a = mysqli_real_escape_string($dbc, $_POST['a']);
        $b = mysqli_real_escape_string($dbc, $_POST['b']);
        $c = mysqli_real_escape_string($dbc, $_POST['c']);
        $insert = "INSERT INTO details
  ( a
  , b
  , c
  ) 
  VALUES
  ( ?
  , ?
  , ?
  ) 
ON DUPLICATE KEY 
UPDATE a  = VALUES (a)
  , b  = VALUES(b)
  , c  = VALUES(c)";
        $row = mysqli_prepare($dbc, $insert);
        mysqli_stmt_bind_param($row, 'sss',$a $b, $c);
        /* execute query */
        $execute = mysqli_stmt_execute($row);
        if ($execute) {
            echo "success";
        } else {
            echo "error ";
        }
      }

  CREATE TABLE `Rest_Details` (
  `A` int(34) NOT NULL AUTO_INCREMENT,
  `B` varchar(100) NOT NULL,
  `C` varchar(200) NOT NULL,
  PRIMARY KEY (`A`),
  UNIQUE KEY `B` (`B`)
  ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8

您的$insert查询缺少一个右引号:

$insert = "INSERT INTO details
  ( a
  , b
  , c
  ) 
  VALUES
  ( ?
  , ?
  , ?
  ) 
ON DUPLICATE KEY 
UPDATE a  = VALUES (a)
  , b  = VALUES(b)
  , c  = VALUES(c)"