【问题标题】:How to store an array with unknown length in mySQL database如何在 mySQL 数据库中存储长度未知的数组
【发布时间】:2021-01-03 22:21:15
【问题描述】:

这将是一个很长的“问题”,但我对如何做到这一点的想法为 0,因此也很难提出这个问题:

我正在尝试做的事情: 我想制作可以从中上传产品的管理页面。为此,我有幻灯片的文件输入。该图像将发送到我的 node.js 后端,我将该文件保存在我的 public/uploads 目录中。然后将路径文件路径发送回前端并与其他幻灯片的其他链接一起添加到数组中,当我按下提交按钮时,该数组被发送到后端。我想将该数组保存在 mySQL 中。

我发给后端要上传的数组是

[
  'uploads/slideshows/nbvnbvdnvvbnSlideshow.jpg',
  'uploads/slideshows/nbvnbvdnvvbnSlideshow2.jpg',
  'uploads/slideshows/nbvnbvdnvvbnSlideshow3.jpg',
  'uploads/slideshows/nbvnbvdnvvbnSlideshow4.jpg',
  'uploads/slideshows/nbvnbvdnvvbnSlideshow5.jpg'
]

并称为幻灯片路径。

数组的长度会因幻灯片而异,所以我不能使用:

db.query(
        'INSERT INTO slideshowarrays VALUES (?,?,?,?,?)',  
        slideshowPaths
)

我尝试使用类似的东西:

db.query( 
        `INSERT INTO slideshowarrays VALUES (${'?'+',?'.repeat(slideshowPaths.length - 1)})`, 
        slideshowPaths
)

但这也会引发错误ER_WRONG_VALUE_COUNT_ON_ROW。 老实说,我什至不知道该怎么做。

我的桌子: 只有link1NN,7 是我将使用的最大链接数。

非常抱歉,如果我把这个问题表述得很糟糕,如果您需要澄清,请在下面的 cmets 中提问。如果你能告诉我任何解决方案,无论多么肮脏,我将不胜感激。

【问题讨论】:

  • 我认为如果你只是将空值添加到你的数组中它应该可以工作,这样它总是有 7 个条目: for(let i = slideshowPaths.length; i
  • 这是几个问题的重复,你应该可以在这里找到你要找的东西:stackoverflow.com/questions/17371639/…

标签: mysql sql node.js


【解决方案1】:

我不会将这五个图像插入到同一行的五个列中。如果您需要包含六张或八张或十张图片的产品怎么办?您需要扩展您的表格以拥有更多列。您总是想知道明天您是否需要支持比列数多一张图片的产品。

相反,将每个图像存储在自己的行中。然后,您只需要一列作为图像名称。您循环输入并为每个图像执行一次 INSERT,为每个图像插入一个新行。然后,您可以为每个产品支持任意数量的图像,而无需在表格中添加列。

这是典型的一对多关系:您需要第二个表。您将产品详细信息存储在 products 表中,然后将多行存储在 product_images 中表。

【讨论】:

  • 创建表如:create table product_images (id int,imageid int,link varchar(256))
猜你喜欢
  • 2016-07-17
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多