Ich habe eine INSERT .. ON DUPLICATE KEY, die nur nicht aktualisieren, sondern fügt eine neue Zeile. Ich habe 2 eindeutige Schlüssel, aber es fügt nur neue Zeilen ein. Ich habe versucht, eindeutige Schlüssel in mehreren Zeilen, um zu sehen, ob das das Problem war, aber immer noch das gleiche Problem.INSERT ... ON DUPLICATE KEY oder UPDATE ... SET
Also ich frage mich, würde UPDATE Tabelle SET verwenden ... besser geeignet sein oder sollte ich mit INSERT .. ON DUPLICATE bleiben.
Ich habe eine Produkttabelle, die ich möchte, dass meine Administratoren in der Lage sind, zu ändern/zu aktualisieren, wann immer sie möchten. Im Moment habe ich einen INSERT .. ON DUPLICATE, aber es gibt mir endlose Probleme.
Ich habe einen eindeutigen Schlüssel sowohl auf dem Primärschlüssel (ich weiß, es ist nicht erforderlich, nur für Testzwecke) und dem Restaurantnamen, wie logisch dachte ich, wenn ein eindeutiger Schlüssel auf den Restaurantnamen allein nicht funktioniert. Wenn Sie sowohl die Restaurant-ID als auch den Restaurant-Namen als eindeutigen Schlüssel definieren, würde die Funktion die Zeile aktualisieren und keine neue hinzufügen. Aber immer noch nicht funktioniert, das ist meine letzte Zuflucht, da ich das Problem nicht herausfinden kann.
UPDATE
eine neue Zeile nur, wenn ich das Restaurant Namen eingefügt wird ändern, wenn ich irgendetwas anderes die Tabellenaktualisierungen ändern.
if (isset($_POST['Save-dets'])) {
$r_id = mysqli_real_escape_string($dbc, $_POST['Resturant_ID']);
$r_name = mysqli_real_escape_string($dbc, $_POST['rest_name']);
$r_desc = mysqli_real_escape_string($dbc, $_POST['Desc']);
$insert_rest = "INSERT INTO Rest_Details
(Resturant_ID
, Resturant_name
, Resturant_des)
VALUES
(?
, ?
, ?
)
ON DUPLICATE KEY
UPDATE Resturant_ID = ?
, Resturant_name = ?
, Resturant_des = ?";
$run_query = $dbc->prepare($insert_rest);
$run_query->bind_param($c, 'ssssss', $r_id, $r_name, $r_desc,$r_id, $r_name, $r_desc);
if (!$run_query->execute($run_query))
if ($execute) {
echo "<script> alert('Addrrss Saved')</script>";
} else {
echo mysqli_error($dbc);
}
}
CREATE TABLE `Rest_Details` (
`Resturant_ID` bigint(255) NOT NULL AUTO_INCREMENT,
`Resturant_name` varchar(100) NOT NULL,
`Resturant_des` varchar(200) NOT NULL,
PRIMARY KEY (`Resturant_ID`),
UNIQUE KEY `Resturant_ID` (`Resturant_ID`,`Resturant_name`),
) ENGINE=InnoDB AUTO_INCREMENT=243 DEFAULT CHARSET=utf8
Ihre Meinung zu diesem Thema wäre sehr hilfreich.
Was ist der Wert von $ r_id? –
@ JonDirling die Restaurant-ID. In diesem speziellen Restaurant 3 – user6362696
Okay, macht es einen Unterschied, wenn Sie Ihre Bind-Param-Zeile ändern, um 'ississ' anstelle von' ssssss' zu verwenden? Und Sie sollten 'Resturant_ID =?' Entfernen, da es überflüssig ist. –