Я создаю базовую систему управления клиентами для панели администратора, и мне нужно создать новый номер идентификатора для каждого нового клиента, но я хочу, чтобы он запускался с идентификатором строки в БД. Я проверяю, какой номер последнего идентификатора затем добавляю один к нему, однако. Идентификационный номер клиента выглядит следующим образом: 000001, 000002 и т. Д.
В приведенном ниже сценарии я сначала проверяю MAX идентификатор клиента из таблицы и извлекаю связанные данные, сохраняю идентификатор клиента в переменную, а затем добавляю 1 к результату переменной. Здесь начинается небольшая часть проблемы. Результат после добавления представляет собой одну цифру вместо результата из 6 цифр, например, 000003. Я получаю 3 вместо. Затем я добавляю отступ в 0 к конечному результату с помощью str_pad (); так что я могу добавить дополнительные 5 0 мне нужно создать номер клиента.
Большая проблема начинается, когда я пытаюсь добавить оператор while. Я продолжаю получать это:
«Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в …»
Я предполагаю, что это потому, что оператор while каким-то образом создает бесконечный цикл. Есть мысли о том, что можно это исправить? Я попробовал это 3 разными способами, но я продолжаю получать фатальную ошибку, когда делаю цикл «do … while». Спасибо
do{
if($result = $dbConnection->query("SELECT MAX(customerId) AS customerId FROM customers")){
$data = $result->fetch_assoc();
$itemId2 = $data['customerId'];
$customerId = $itemId2 + 1;
}
$customerId = str_pad($customerId, 1, '0', STR_PAD_LEFT);
} while(strlen($customerId) < 5);
sprintf('%06d', 1231);
06 означает, что это будет шестизначная строка, к 1231 добавится 2 ведущих нуля.
Можно отрегулировать для максимальной длины.
Может захотеть привести обратно к целому числу, если это важно.
Других решений пока нет …