Ich versuche eine Abfrage zu tun, die aktualisiert, wenn 'ID' existiert und fügt, wenn es nicht existiert. Als ich versuchte, die folgende Abfrage auszuführen, konnte ich so viele doppelte Datensätze sehen, die eingefügt wurden. Ich weiß nicht, was ich falsch mache. Meine Frage ist unten. Id ist die 'Autoincrement' und 'KEY'. Ich bekomme keine Abfrage Fehler. DB ist MysqlEin Duplikatschlüssel Update-Syntax PHP/Mysql Fehler
while ($i < $size) {
$sl= $_POST['sl'][$i];
$item_id= $_POST['item_id'][$i];
$item_name= $_POST['item_name'][$i];
$prod_description=$_POST['prod_description'][$i];
$prod_description= mysql_real_escape_string($prod_description);
$item_quantity= $_POST['item_quantity'][$i];
$item_units= $_POST['item_units'][$i];
$unitprice= $_POST['unitprice'][$i];
$total=$_POST['total'][$i];
$currency_selected=$_POST['currency_change'][$i];
$total_inr= $_POST['total_inr'][$i];
$id = $_POST['id'][$i];
$item_quantity_sup= $_POST['item_quantity_sup'][$i];
$slab_range= $_POST['slab_range'][$i];
$item_units_sup= $_POST['item_units_sup'][$i];
$item_partno= $_POST['item_partno'][$i];
$ifmain= $_POST['ifmain'][$i];
$sup_itempartno = $_POST['sup_itempartno'][$i];
$query = "INSERT INTO comparitive_st_sup (
id,
tender_id,
item_id,
ifmain,
slno,
item_name,
item_partno,
prod_description,
sup_itempartno,
currency,
slab_range,
qty,
total_inr,
qty_sup,
item_units,
item_units_sup,
unitprice,
total,
supplier_name
)
VALUES (
$id,
'$tender_id',
'$item_id',
'$ifmain',
'$sl',
'$item_name',
'$item_partno',
'$prod_description',
'$sup_itempartno',
'$currency_selected',
'$slab_range',
'$item_quantity',
'$total_inr',
'$item_quantity_sup',
'$item_units',
'$item_units_sup',
'$unitprice',
'$total',
'$supplier_name2'
)
ON DUPLICATE KEY UPDATE
ifmain='$ifmain',
slno = '$sl',
item_name = '$item_name',
item_partno = '$item_partno',
prod_description = '$prod_description',
sup_itempartno = '$sup_itempartno',
currency = '$currency_selected',
slab_range= '$slab_range',
qty = '$item_quantity',
qty_sup = '$item_quantity_sup',
item_units = '$item_units',
item_units_sup = '$item_units_sup',
unitprice = '$unitprice',
total = '$total',
total_inr='$total_inr'";
mysql_query($query) or die ("Error in query: $query");
++$i;
}
Das tatsächliche Szenario ist. Ich habe einige Datensätze in meiner Datenbank. Ich rufe die Datensätze im Bearbeitungsmodus auf. In diesem Modus können die Benutzer einige Zeilen hinzufügen (dynamische Zeilen) und sie können aktualisieren. Also, welche Datensätze immer vorhanden sind, sollte aktualisiert werden und die neu hinzugefügten Zeilen sollten in die Tabelle eingefügt werden.
ich habe es korrigiert. Aber das ist nicht der Fehler hier. Die Zeilen duplizieren ... –
Das tatsächliche Szenario ist. Ich habe einige Datensätze in meiner Datenbank. Ich rufe die Datensätze im Bearbeitungsmodus auf. In diesem Modus können die Benutzer einige Zeilen hinzufügen (dynamische Zeilen) und sie können aktualisieren. Also, welche Datensätze immer vorhanden sind, sollte aktualisiert werden und die neu hinzugefügten Zeilen sollten in die Tabelle eingefügt werden. –
Haben Sie Ihre Daten vor dem Einfügen überprüft? Sind Sie sicher, dass die ID korrekt übergeben wurde? – LolWalid