Сгенерируйте автоматический серийный номер и сохраните результат в базе данных

#php

#php

Вопрос:

Может кто-нибудь, пожалуйста, помогите мне.

Я получил онлайн-код о том, как сгенерировать автоматический серийный номер, и отредактировал его в соответствии с моими потребностями, что, конечно, дает мне желаемый результат. Но при сохранении результатов в базе данных сохраняется только последнее значение, которое равно «99«, вместо всех значений, начинающихся с 00001.

Я не понимаю, как переписать код, чтобы сохранить все значения в базе данных. Пожалуйста, кто-нибудь, посмотрите на приведенный ниже код и дайте совет

 <?php require_once('Connections/@@@@@.php'); ?>

<?php
for($i = 1; $i < 100; $i  ){
$result = str_pad($i, 5, '0', STR_PAD_LEFT) . '<br />';
echo $result;
} 
mysql_select_db($database_@@@@@, $@@@@@);
mysql_query("INSERT INTO codes (sn) VALUES ('$result')");
?>
  

Спасибо

Комментарии:

1. Вы выполняете только один запрос insert, который выполняется после того, как вы сгенерировали все возможные коды. Вам нужно переместить вызов mysql_query() внутри вашего цикла for и убедиться, что функция mysql_select_db() выполняется до того, как вы войдете в этот цикл.

2. в 100 раз лучше объединить результаты и выполнить 1 запрос, чем выполнить 100 запросов

3. @shaunc: Ок. Я попробую это тогда

4. @Dagon: Я не понимаю, что вы имеете в виду. Можете ли вы объяснить подробнее

5. @shaunc: Ваш комментарий сработал. Я переместил mysql_select_db() между циклом и $result, и это сработало. Но теперь у меня есть ‘<br />’ также в базе данных, например, «00094<br />». Вот как выглядят записи. Вы теперь почему? Это должно быть только «00094»

Ответ №1:

гораздо лучше не делать 100 запросов, когда достаточно 1

 <?php require_once('Connections/@@@@@.php'); ?>

<?php
$result ='';
for($i = 1; $i < 100; $i  ){
$result .= "'".str_pad($i, 5, '0', STR_PAD_LEFT)."'," ;//crate concatenated string
// echo $result."<br>";
} 
$result = substr($result,0, -1); //removes last comma

mysql_select_db($database_@@@@@, $@@@@@);
mysql_query("INSERT INTO codes (sn) VALUES ($result)");
?>
  

это вставит все 100 в один запрос, <br> который также был удален из строк базы данных

Ответ №2:

Для автоматического серийного номера это то, что я использовал

 SELECT j.*, DATE_FORMAT( ddate,  '%d %M %Y' ) AS ddate2, DATE_FORMAT( dateapplied,  '%d %M %Y' ) AS dateapplied2, @curRow := @curRow   1 AS sn
FROM jobsappltn j JOIN  (SELECT @curRow := 0) r
ORDER BY j.jaid DESC
  

При этом вам не нужно использовать значения идентификатора автоматического увеличения mysql… Просто поместите значения столбца sn в качестве первого столбца.

Ваша таблица будет выглядеть следующим образом

 sn       Ddate2        Dateapplied2
1        09-09-2018    09-08-2018
2        10-09-2018    29-08-2018