【问题标题】:Codeigniter, mysql, select_max and add 1 before inserting another recordCodeigniter、mysql、select_max 并在插入另一条记录之前加 1
【发布时间】:2018-08-03 10:10:53
【问题描述】:

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

谢谢。

【问题讨论】:

  • 在我看来很像自动递增的主键...
  • 我编辑了我的问题:我不能使用自动增量,因为我需要对该列进行一些操作(重新排序、移动等)并且必须将其用作整数。

标签: php mysql codeigniter


【解决方案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);

【讨论】:

    【解决方案2】:

    【讨论】:

    • 最好粘贴答案而不是链接
    • 好吧,如果是这样的话,我也必须复制解释部分:)
    【解决方案3】:

    $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'),
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2023-02-04
      相关资源
      最近更新 更多