2016-04-03 90 views
0

这是我第一次使用插入..重复,我有一个问题。重复更新的插入操作并不像我预期的那样,例如每次尝试更新我的数据库中的表时,都会将新行插入到数据库中,而不是按预期方式更新行。很奇怪。我想知道是否有人会看一看,并通过你的看法。 我有一个主要的和独特的关键。INSERT ... ON DUPLICATE KEY UPDATE不能正常工作

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 
+0

如果要更新行,使用'UPDATE'。当您在查询的列和值中包含自动递增主键时,“INSERT ... ON DUPLICATE KEY UPDATE”通常没有意义。 –

回答

0

$insert查询缺少密切报价:

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

谢谢你指出,不幸的是我仍然有相同的问题 – JJ123

相关问题