【问题标题】:How to increase id inside while loop?如何在while循环中增加id?
【发布时间】:2019-01-10 19:23:34
【问题描述】:

代码:

while (($row= fgetcsv($file_data, 10000, ",")) !== FALSE)
{
    $product_id = date('mdHis');
    $data[] = array(
             'product_id' => $product_id
         );
}

在这段代码中,我正在导入完美运行的 csv 文件。现在,当我将 csv 文件数据插入到我的数据库中时,我还插入了一个 id,即product_id 现在,当我单击提交按钮时,它存储相同的值,但我想为不同的行存储不同的 product_id。那么,我该怎么做呢?请帮帮我。

谢谢

【问题讨论】:

  • 请向我们展示所有相关代码(如现有数据库代码)以及一些数据示例。此外,您的循环并没有真正使用 csv 中的任何内容?
  • 先生,实际上我希望我的 `product_id` 自动递增,如果在我的 csv 文件中有 100 条记录,那么 product_id 就像每行一样 1,2,3,4,5 但现在它保持不变即我不想要的 1,1,1,1。 @MagnusEriksson
  • 在你的数据库中设置一个列为auto-increment(这是推荐的方法)并让数据库处理不是更容易吗?
  • 您知道auto-increment 列,但由于某种原因不想在此处使用,或者您不明白如何或为什么要这样做?

标签: php loops mysqli


【解决方案1】:

您可能只想在数据库中使用自动增量,您还可以使用 date_created 列和时间。循环对于 date() 来说太快了(s 是秒!),但即使是 microtime() 也没有多大意义。

如果你真的想这样做,为什么要在 php 中:

function generateTimeID($start, $format_string) {
    while (True) {
        yield date($format_string) . $start;
        $start ++;
    }
}

$time_generator = generateTimeID($last_id_from_database, 'mdHis-');

while (($row= fgetcsv($file_data, 10000, ",")) !== FALSE)
{
    $product_id = $time_generator->value();
    $time_generator->next();
    $data[] = array(
             'product_id' => $product_id
         );
}

【讨论】:

    猜你喜欢
    • 2017-09-22
    • 2021-12-12
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    相关资源
    最近更新 更多