2013-07-10 149 views
0

我有一个看起来像这样笨更新记录

$data_gallery = array(
'order' => $value 
); 

$this->db->where('order', $newOrder); 
$this->db->update('gallery', $data_gallery); 

我不得不说,5张图片我已经reorderd的更新记录。我有他们的旧位置和新的位置。

但是当我循环他们时,有时会互相覆盖。

实施例:

5图像1,2,3,4,5

我改变顺序在循环2,1,3,4,5

我更新,因为它去通过新秩序阵列。

Update order = 2 where order = 1 
Update order = 1 where order = 2 

很明显,第二个从来没有被击中,因为order = 2不再存在。

我想这比逻辑问题更重要。

任何想法如何轻松地循环和更新,而不会丢失一些数据?我虽然可能在批量操作中更新,但并没有得到很大的帮助。

在此先感谢。

+0

为什么要更新订单WHERE订单?也许最好使用记录ID,而不是? – sinisake

回答

1

使用图像的ID您的WHERE子句中:

$this->db->where('imageid', $imageid); 

这将设置新的以每幅图像以前没有覆盖任何信息(和消失!)。

+1

今天晚上我带着一双全新的眼睛回到了它的身后,我想到了同样的事情。现在工作一种治疗。 – lunchboxbill

1

检查您是否有其他字段检查您的标准以匹配确切的记录。

$data_gallery = array(
    'order' => $value 
); 

$this->db->where('order', $newOrder); 
//check if you have any other fields to match also image id, record id or any other ids to match 
$this->db->where('second_id',$second_id); 
$this->db->update('gallery', $data_gallery);