Php / mysql key duplication syntax Error

I am trying to execute a query that is updated if an "ID" exists and inserts if it does not exist. When I tried to execute the following query, I could see that many duplicate entries were inserted into it. I do not know what I am doing wrong. My request is below. Id is "Autoincrement" and "KEY". I do not receive any request errors. DB - Mysql

    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;
    }

Actual scenario. I have entries in my db. I call up records in edit mode. In this mode, users can add multiple rows (Dynamic Rows), and they can be updated. So which records should always be updated, and the newly added rows should be inserted into the table.

+4
3

INSERT ON DUPLICATE KEY UPDATE , , , , , , , .

+1

INTO:

$query = "INSERT INTO comparitive_st_sup (id, tender_id) 
                             VALUES ( $id, '$tender_id')
          ON DUPLICATE KEY UPDATE tender_id='$tender_id'";
0

Have you tried INSERT INGORE? It will insert a row if it does not exist. If it exists, it will skip.

0
source

All Articles