Codeigniter: mysql transaction and affected_rows



我需要做多个插入/更新,所以我提出了事务回滚,如果有任何问题。此外,我的应用程序应该更新记录,如果已经存在,并插入如果不存在。

所以首先我尝试使用唯一id更新记录,如果它返回affected_rows=0,我继续插入。

可能我错过了一些事务/受影响的行,它总是返回affected_rows=0。

代码如下:

$this->db->trans_start();
   $this->db->where('order_id', $order_id);
   $this->db->where('order_status', 'Active');
   $this->db->update('orders', $order);
   $this->db->where('order_id', $order_id);
   $this->db->where('sku', $item_sku);
   $this->db->update('order_items', $order_items);
$this->db->trans_complete();
if ($this->db->affected_rows()==0){
   $this->db->trans_start();
       $this->db->insert('orders', $order);
       $this->db->insert('order_items', $order_items);
   $this->db->trans_complete();
}

提前感谢!

我使用MySQL的ON DUPLICATE KEY UPDATE来处理这种情况。然而,CodeIgniter的ActiveRecord实现本身不支持这个,并且在这个线程中接受的答案是:

我如何在我的CodeIgniter模型中使用ON DUPLICATE KEY UPDATE ?

似乎死了。因此,考虑使用原始MySQL而不是ActiveRecord模式;这在CI开发人员中相当普遍(我不使用他们的AR实现)。

相关内容

  • 没有找到相关文章

最新更新