【问题标题】:insert array with dynamic amount of values to database将具有动态值数量的数组插入数据库
【发布时间】:2015-03-15 11:14:51
【问题描述】:

我正在尝试将一组图像信息插入到我的数据库中。该数组包含大量图像信息,最初我只允许将数组中的 3 张图像输入数据库。 图像详细信息进入一个名为 print 的表格,三个图像 URL 中的每一个都有自己的列,每个图像都有一个标题,图像的拍摄日期和位置。所有这些信息都与用户 ID 放在一行中。

// Assign images and data to appropriate variables
                    $image_one = $feed['0']['images']['standard_resolution']['url'];
                    $image_one_caption = htmlspecialchars($feed['0']['caption']['text'], ENT_QUOTES);
                    $image_one_date = $feed['0']['created_time'];
                    $image_one_location = $feed['0']['location']['name'];

                    $image_two = $feed['1']['images']['standard_resolution']['url'];
                    $image_two_caption = htmlspecialchars($feed['1']['caption']['text'], ENT_QUOTES);
                    $image_two_date = $feed['1']['created_time'];
                    $image_two_location = $feed['1']['location']['name'];

                    $image_three = $feed['2']['images']['standard_resolution']['url'];
                    $image_three_caption = htmlspecialchars($feed['2']['caption']['text'], ENT_QUOTES);
                    $image_three_date = $feed['2']['created_time'];
                    $image_three_location = $feed['2']['location']['name'];

但是,我现在想这样做,以便输入到表格中的打印数量最多可以从 3 到 10 不等。我想知道最好的方法来做到这一点。 我可以按照上面显示的方式简单地将数组值分配给更多变量,但是这很笨重,而且我觉得不必要地重复。

我正在考虑一个 foreach 循环,但是我不确定如何将每个图像和每个图像伴随数据插入到用户打印行的正确列中。

另一种选择是创建一个单独的 print_info 表并存储用户 ID 和 print_job 编号,然后在打印表中纯粹将图像信息放在单独的行中,并使用 print_job 列将 print_job 链接到用户 print_info 行。这是解决这个小问题的最佳方法吗?

【问题讨论】:

标签: php mysql arrays


【解决方案1】:

这个呢:

$numOfImages = 4; //the number you want
for ($i=0; $i < $numOfImages; $i++) {
    $image = $feed[$i]['images']['standard_resolution']['url'];
    $image_caption = htmlspecialchars($feed[$i]['caption']['text'], ENT_QUOTES);
    $image_date = $feed[$i]['created_time'];
    $image_location = $feed[$i]['location']['name'];

    //...operation with $image
}

【讨论】:

  • 这就是我的想法,但是我应该为每个图像单独插入查询,还是尝试在一个查询中插入所有图像?就像我说的那样,最多有 10-15 张图片,所以如果每张图片有 10-15 个插入查询。
  • 在上面的示例中,它是对每个数组的单独查询,或者您可以将 Insert 语句存储在数组中并在最后执行批量插入。 INSERT INTO table VALUES (imgA1, imgA2, imgA3), (imgB1, imgB2, imgB3)
  • 感谢 nik,我只是想在一个 PDO 语句中进行多行插入,看起来相当庞大。会试一试。我可以为每个单独查询,就像我说的那样,最多 10-15 个插入,每个插入只有 4 列,所以不需要大量的工作
  • 这并不难,请参阅其他answer,如果我的回答有帮助,请将其标记为。
猜你喜欢
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 2014-07-21
  • 2015-12-03
  • 2013-12-18
  • 2014-04-20
  • 1970-01-01
相关资源
最近更新 更多