我想插入id并+ 1将表单字段插入到MySQL表中。我想获取插入操作的最后一个id作为查询的返回值,但是我有一些问题。
这是我获取最后一个ID的代码。
function GenIDInv()
{
$CI = get_instance();
$CI->db->select('n_id');
$CI->db->from('sltax_notification_name');
$CI->db->order_by("n_id", "desc");
$query = $CI->db->get();
$result = $query->row();
if(!empty($result)){
$result = $result->n_id;
$rid = substr($result,6,9);
$id = $rid+1;
echo date('Ym') . sprintf("%'.03d\n",$id);
}
}
当我插入ID时,它不会+1
答案 0 :(得分:0)
Codeigniter文档:http://codeigniter.org.cn/user_guide/database/query_builder.html?highlight=max#CI_DB_query_builder::select_max
SELECT Max(n_id) FROM sltax_notification_name;
答案 1 :(得分:0)
我了解到您想要201812001至201812002
尝试一下:
$rid = substr($result, 8, 1);
//echo $rid; // $rid should contains 1
$id = $rid+1;
答案 2 :(得分:0)
我假设您的字段n_id
的构成如下:[YYYYMM] [XXX] => [DATE] [ID]
第一个问题,如果您的ID大于999,会发生什么?
我会假设您要处理大于999的id。
所以现在,我们需要解决的问题是如何向id部分添加1,并保持其左侧为0。
您从数据库中获得的最后一个ID很不错,它可能是字符串。
我们要做的第一件事是将id部分与日期部分分开。
$n_id = $result->n_id;
$id = substr($n_id, 6, strlen($n_id)) // we know the first 6 characters are part of the date and the rest is part of id
然后我们要将一个添加到$id
$id += 1; // that statement will cast our string to int
#Now we want to cast it to string and pad with 0 if needed
if (strlen($id) < 3) {
$id = str_pad($id, 3, '0', STR_PAD_LEFT);
}
现在,我们只需要将它们粘在一起
$date = new Datetime();
$newN_id = $date->format('Ym').(string)$id