如何插入ID +1并获取上一个ID?

时间:2018-12-14 02:53:02

标签: php mysql codeigniter

我想插入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

3 个答案:

答案 0 :(得分:0)

答案 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