php - 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);
谢谢。
解决方案
$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'),
);
推荐阅读
- facebook - 是否有任何 Facebook API 可以让我获得与输入的电话号码相关的帐户?
- javascript - 使用 JavaScript 按类在 html 上显示内容
- java - Hibernate CriteriaBuilder:当它是实体时不是实体
- java - Spring Boot 在执行 jar 时覆盖 appplication.properties 值
- spartacus-storefront - 如何在 Spartacus 中将 LoginComponent 的文本“登录/注册”更新为“登录”?
- api - 如何使用 Swagger 在 Nest js 中对端点进行分组
- arduino - 为什么我的请求返回不完整的多部分?
- python - 是否有可能获得类似于 pandas.shape() 的 TFdataset 的形状?
- r - 如何在一个数据框中组合特定的行
- javascript - 如何使用地图功能使图像在 Gatsby 中工作