首页 > 解决方案 > Codeigniter、mysql、select_max 并在插入另一条记录之前加 1

问题描述

当我在数据库表中插入一条新记录时,我需要获取一个名为 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);

谢谢。

标签: phpmysqlcodeigniter

解决方案


$res是一个CI_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'),
);

推荐阅读