在mysql中的表的同一列中重新进行更新

时间:2013-08-19 12:49:00

标签: php mysql codeigniter

我正在尝试更新名为tbl_sub_categories的表中同一列的两行,其中包含不同的位置,我这样做了:

$temp = 4;
$sub_cid = 100;
$rank = 6;
$next_id = 112;

$this->change_rank($temp, $sub_cid);
$this->change_rank($rank, $next_id);

function change_rank($rank,$sub_cid){
//    echo $rank.'--'.$sub_cid.'-------';
    $query  = "UPDATE tbl_sub_categories SET fld_rank = '".$rank."' WHERE fld_id ='".$sub_cid."'";
    $this->db->query($query);
}

在更新tbl时它只更新第一行但下一行没有变化......我不明白为什么会这样......请帮忙......

2 个答案:

答案 0 :(得分:1)

如果你正在使用CodeIgniter,它的Active Record类中有一个功能可以更新多行:

$data = array(
   array(
      'fld_rank' => '4',
      'fld_id' => '100'
   ),
   array(
      'fld_rank' => '6',
      'fld_id' => '112'
   )
);

$this->db->update_batch('tbl_sub_categories', $data, 'fld_id'); 

查看CI user guide中的$this->db->update_batch();方法。

答案 1 :(得分:0)

这可能有效 - >更改您的功能如下:

function change_rank($rank1,$sub_cid1){
//    echo $rank.'--'.$sub_cid.'-------';
    $query  = "UPDATE tbl_sub_categories SET fld_rank = '".$rank1."' WHERE fld_id ='".$sub_cid1."'";
    $this->db->query($query);
}