0

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

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

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

我说,我重新排序了 5 张图片。我有他们的旧职位和他们的新职位。

但是当我遍历它们时,它们有时会相互覆盖。

例子:

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 不再退出。

我想这更像是一个逻辑问题。

有什么想法可以轻松循环和更新而不会丢失一些数据吗?我虽然可能会在批处理操作中进行更新,但并没有走得太远。

提前致谢。

4

2 回答 2

1

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

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

这将为每个图像设置新顺序,而不会先前覆盖(并消失!)任何信息。

于 2013-07-10T22:45:03.040 回答
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);
于 2013-07-11T03:48:28.693 回答