Как вставить идентификатор +1 и получить последний идентификатор? - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу вставить id и + 1 вставить поля формы в таблицу MySQL.Я хочу получить последний идентификатор для операции вставки в качестве возвращаемого значения моего запроса, но у меня есть некоторые проблемы с ним.

Это мой код для получения последнего идентификатора.

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 голосов
/ 14 декабря 2018

Я понял, что вы хотите с 201812001 по 201812002

Попробуйте:

$rid = substr($result, 8, 1);
//echo $rid; // $rid should contains 1
$id =  $rid+1;
0 голосов
/ 15 декабря 2018

Я предполагаю, что ваше поле n_id составлено так: [ГГГГММ] [XXX] => [ДАТА] [ID]

первый вопрос: что произойдет, если ваш идентификатор больше 999?

Я предполагаю, что вы хотите обработать идентификатор больше 999.

Итак, теперь проблема, которую нам нужно решить, это как добавить 1 к части идентификатора и поддерживать ее дополненной 0слева.

Вы получаете свой последний идентификатор из базы данных, это приятно, вероятно, это строка.

Первое, что мы хотим сделать, это получить часть идентификатора отдельно от части даты.

$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
0 голосов
/ 14 декабря 2018

кодовых документов: 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...