Я хочу вставить 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);
}
}
когда я вставляю идентификатор, это не +1
когда я вставляю идентификатор в базу данных, он не +1.
Что означает +1 в вашем случае?
У меня id = 201812001, я хочу получить последний идентификатор и вставить id = 201812002 в данные
Я подозреваю, что вы не получаете того, чего ожидаете от $ rid.






Документы 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;
попытка завершена: $ result = $ this-> db-> select_max ('n_id') -> from ('sltax_notification_name') -> get () -> row ();
Я понял, что вы хотите с 201812001 по 201812002
Попробуй это:
$rid = substr($result, 8, 1);
//echo $rid; // $rid should contains 1
$id = $rid+1;
Я предполагаю, что ваше поле n_id составлено следующим образом: [ГГГГММ] [XXX] => [ДАТА] [ID]
Первый вопрос: что произойдет, если ваш идентификатор больше 999?
Я предполагаю, что вы хотите обрабатывать id больше 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
«Некоторые проблемы» - вам следует более подробно описать, что это означает.