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
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. –