mysql - 如何在 mySQL 数据库中存储长度未知的数组
问题描述
这将是一个很长的“问题”,但我对如何做到这一点有 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
。老实说,我什至不知道该怎么做。
我的表:
只有link1
,NN
并且 7 是我将使用的最大链接数。
非常抱歉,如果我提出这个问题非常糟糕,如果您需要澄清,请在下面的评论中提问。如果您能告诉我任何解决方案,无论多么肮脏,我将不胜感激。
解决方案
我不会设计这个将五个图像插入同一行的五个列中。如果您需要包含六张或八张或十张图片的产品怎么办?您需要扩展您的表格以拥有更多列。您总是想知道明天您是否需要支持比列数多一张图片的产品。
相反,将每个图像存储在自己的行中。然后,您只需要一列作为图像名称。您循环输入并为每个图像执行一次 INSERT,为每个图像插入一个新行。然后,您可以为每个产品支持任意数量的图像,而无需在表格中添加列。
这是典型的一对多关系:您需要第二个表。您将产品详细信息存储在products
表中,然后在product_images
表中存储多行。
推荐阅读
- node.js - 如何使用 Vite 部署到 Heroku
- python - 这个短剪刀纸摇滚逻辑是如何工作的
- nginx - 使用 Nginx 的 MIME 类型('text/html')中的 Nextcloud 页面错误
- tinymce - 在 TinyMCE 中添加 void/singleton 元素(标签)
- bluetooth - USB 蓝牙设备无法连接到 VMware 虚拟操作系统中的其他设备
- distributed - 是否可以对事件进行建模以封装在不同时间发生的多个事情
- javascript - 如何使用 Google API、PHP 和 MySQL 在饼图中过滤日期
- regex - 如何使用bash在单词后匹配带有换行符的文本
- regex - 正则表达式:我想分隔包含一些例外的地址
- javascript - 错误:数据越界(长度=3,偏移量=32,代码=BUFFER_OVERRUN,版本=abi/5.0.7)next-js,以太坊