2016-04-03 93 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

相關問題