Codeigniter,mysql,select_max并在插入另一条记录之前加1

时间:2018-08-03 10:10:54

标签: php mysql codeigniter

当我向数据库表中插入新记录时,我需要获取一个名为el_order的列的现有先前值,添加+1,然后使用该新的el_order + 1将具有该值的新记录插入该列中

我不能使用自动增量,因为我需要对该列进行一些操作(重新排序,移动等),并且必须将其用作整数。

我的英语不好,所以我会这样解释:

   ID      name    el_order
   1         1         1
   21       bla        2
   2        2          3
--NEW--   --NEW--     3+1 (NEW)

我添加了一条新记录,并需要在el_order列中以3 + 1插入它...

我已经尝试过了,但是没有运气:

$this->db->select_max('el_order');
$res = $this->db->get('elem_diccio');

$eldi_key = url_title($this->input->post('id'), 'underscore', TRUE);

$el_order = $res+1;

$datos = array(
    'ID' => $id,
    'el_order' => $el_order,
     'name' => $this->input->post('name'),
 );

 $this->db->insert('elem_diccio', $datos);

谢谢。

3 个答案:

答案 0 :(得分:1)

就这样

 $this->db->select_max('el_order');
 $res = $this->db->get('elem_diccio')->row()->el_order;

 $eldi_key = url_title($this->input->post('id'), 'underscore', TRUE);

 $el_order = $res+1;

$datos = array(
  'ID' => $id,
  'el_order' => $el_order,
  'name' => $this->input->post('name'),
);

$this->db->insert('elem_diccio', $datos);

答案 1 :(得分:1)

答案 2 :(得分:1)

$resCI_DB_mysqli_result Object。要获取该列,您需要

$this->db->select_max('el_order');
$res = $this->db->get('elem_diccio')->row();
$el_order = $res->el_order+1;

$datos = array(
    'ID' => $id,
    'el_order' => $el_order,
    'name' => $this->input->post('name'),
);