2013-04-04 1 views
1

Если идентификатор элемента уже существует, то количество должно пе с добавлением тха входящего Quanity еще, если идентификатор не существует вставить идентификатор и количествоя хочу вставить и обновить количество конкретного идентификатора элемента

my_table:

if 
item_id=array(24,25); 

quantity=array(10,2); 

это будет вставлена ​​в таблицу:

else if 

item_id=array(22,23); 
quantity=array(2,4); 

количество должно быть добавить к существующему пункту

auto_id | item_id | количество

1  22   12 
2  23   3 

это тип массив определенного товара и quantity.Sorry за мой английский и спасибо,

foreach($item_id as $row => $id){ 

     $items_id = $id; 
      foreach($quantity as $row => $id2){ 
      $qty = $id2; 
       $values[] = array(
         array("item_id" => $items_id, 
         "quantity" => $qty)); 
       $sql = $this->db->query("SELECT ip_id FROM my_table WHERE item_id = '".$items_id."'");  
       if($sql->num_rows() > 0){ 

        $this->db->query("UPDATE my_table SET quantity=quantity+'".$qty."' WHERE item_id='".$items_id."'"); 
       }else{  
        $this->db->insert_batch('my_table',$values); 
       } 
      } 
+0

Если я правильно понимаю, вы делаете это неправильно, используя 2 оператора foreach. Вы собираете те же 2 количества для каждого идентификатора в приведенном выше примере. Вы должны использовать «array_combine» «чтобы сделать массив ключей от первого значения & значения от второго, тогда сделайте один foreach, который даст вам правильный результат. – ahmad

ответ

3

Пропустить все, что код и использовать простую конструкцию ON DUPLICATE KEY ...:

INSERT INTO yourtable (id, quantity) VALUES ($id, $quantity) 
ON DUPLICATE KEY UPDATE quantity=quantity+VALUES(quantity) 
+0

Просто убедитесь, что ваш столбец id является первичным ключом. Скорее всего это всего лишь напоминание. –

+0

пропустите все коды? Также tha foreach? – user1528552

+0

item_id вставляет повторяющиеся значения, а также количество – user1528552

Смежные вопросы