#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