使用Codeigniter更新数据库将无法正常工作

时间:2014-02-18 18:36:14

标签: php codeigniter activerecord for-loop jquery-ui-sortable

我遇到了对数据库更新的问题。我试图用图片制作一个排序系统,但它不起作用。我正在使用Jquery的可排序函数。有了它,我从当前排序(保存)返回我的数组。

如果我将图像从第1位移动到第2位,一切正常。因此oldSortNumber为1,新的为2(1 + 1)。这是我的代码:

public function updateOrder ($newSortArray) {
    for($i = 0; $i <= 5; $i++)
    {
        $oldSortNumber = substr($newSortArray['img'][$i], strpos($newSortArray['img'][$i], ".") + 1);
        $newSortNumber = $i + 1;

        $this->db->where('sortID', $oldSortNumber);
        $this->db->update('user_image', array('sortID' => $newSortNumber));
    }
}

当我放回图像时(从2到1,或类似的东西),我的功能将无效。所以它不会更新到我的新职位。 1代替2.

所以在我的数据库中我有一张带有sortOrder 2的图片。如果我把它放在第三位。一切正常。但是当我将它定位到第一位时,它将不会更新到数据库。输入很好,我不知道什么是错的。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

它不会像这样工作,因为你的位置和更新数据在同一列中。你必须使用user_image表的ID,where条件中的主键,并将查询值旧的排序顺序设置为表id

public function updateOrder ($newSortArray) {
for($i = 1; $i <= 6; $i++)
{
    $ID = substr($newSortArray['img'][$i], strpos($newSortArray['img'][$i], ".") + 1);

    $this->db->where('YOUR_TABLE_ID', $ID );
    $this->db->update('user_image', array('sortID' => $i ));
}
}