INSERT ... ON DUPLICATE KEY UPDATE无法正常工作

时间:2016-04-03 00:37:49

标签: php mysql

这是我第一次使用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

1 个答案:

答案 0 :(得分:0)

您的$insert查询缺少近距离引用:

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