2016-04-03 20 views
0

これは私の初めての挿入時の複製です。問題があります。たとえば、DB内のテーブルを更新しようとするたびに、新しい行が期待どおりに更新されるのではなく、DBに挿入されるなど、重複した更新の挿入が正しく機能しません。非常に奇妙な。私は誰かが見て、それにあなたのテイクを渡すかどうか疑問に思っていた。 私は途中でプライマリキーとユニークキーを持っています。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 "; 
     } 
     } 

TABLE

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

を。 INSERT ... DUPLICATE KEY UPDATEは、通常、問合せの列と値に自動インクリメントの主キーが含まれていると意味がありません。 –

答えて

0

あなた$insertクエリが近い引用不足している:あなたが行を更新したい場合は、 `UPDATE`を使用し、

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

それを指摘してくれてありがとう、残念ながら私はまだ同じ問題がある – JJ123

関連する問題