2016-04-03 10 views
0

Dies ist das erste Mal mit Einsatz .. auf doppelte, habe ich ein Problem. Meine Einfügung bei Duplikataktualisierung funktioniert nicht genau so, wie ich es erwartet hätte. Zum Beispiel wird jedes Mal, wenn ich versuche, eine Tabelle in meiner DB zu aktualisieren, eine neue Zeile in die DB eingefügt und nicht wie erwartet aktualisiert. Sehr eigenartig. Ich habe mich gefragt, ob jemand einen Blick darauf werfen und deine Meinung darüber abgeben würde. Ich habe übrigens einen primären und einzigartigen Schlüssel.INSERT ... ON DUPLICATE KEY UPDATE funktioniert nicht wie erwartet

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

Wenn Sie eine Zeile aktualisieren möchten, verwenden Sie 'UPDATE'. 'INSERT ... ON DUPLICATE KEY UPDATE' macht normalerweise keinen Sinn, wenn Sie einen Primärschlüssel mit Autoinkrement in den Spalten und Werten der Abfrage enthalten haben. –

Antwort

0

Ihre $insert Abfrage eine enge Zitat fehlt:

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

ich danke Ihnen, dass Sie darauf hingewiesen haben, leider habe ich immer noch die gleichen Probleme – JJ123

Verwandte Themen