我遇到了一种情况,我试图从与 PHP 的多对多关系输出 MySQL 数据透视表/链接表的内容。
在下面的代码中,我有一系列包含图像的板。实际的板预览是使用 PHP 的第一个块输出的,但在其中我需要一个嵌套的 while 循环来输出图像本身。
枢轴/链接表被称为boards_images有两列board_id,并且这些都是表和表image_id的外键。下面的主要代码下面给出了表格的表示。boardsimages
因为某些板的图像已经存在于其他板上,所以我显然需要某种类型的条件逻辑,以便在相关板存在时输出图像。
每个板预览只会显示四个图像,因此我需要LIMIT 4向 MySQL 添加一个子句
我的问题
解决这个问题的最佳方法是什么,我:
a) 需要执行两次数据库调用,一次在父 while 循环中,一次在嵌套 while 循环中,或者我是否需要使用多个 JOIN 从父 while 循环中的 MySQL 数据库获取所有信息?
b) 如何实际输出数据透视表/链接表的内容?我似乎不知道如何做到这一点。
<?php
// $db_id is a variable created from a user login $_SESSION value
$sql = "SELECT boards.board_id, boards.board_name, users.user_id
FROM boards
JOIN users ON boards.user_id = users.user_id
WHERE users.user_id = :user_id
ORDER BY boards.board_id DESC";
$stmt = $connection->prepare($sql); …Run Code Online (Sandbox Code Playgroud) 我有一个需要文件上传的表单,目前每次上传的文件数限制为 10 个。后端也有 PHP 验证。
\n当附加的文件超过 10 个时,我当前在文件输入元素的事件slice(0, 10)内有一个 JavaScript 方法change,当附加的文件数超过 10 个时,该方法会删除所有文件(及其预览图像缩略图)。
// For each added file, add it to submitData (the DataTransfer Object), if not already present\n[...e.target.files].slice(0,10).forEach((file) => {\n if (currentSubmitData.every((currFile) => currFile.name !== file.name)) {\n submitData.items.add(file);\n }\n});\nRun Code Online (Sandbox Code Playgroud)\n问题
\n我能\xe2\x80\x99t 似乎做的是在复合附件情况下找到一种slice()文件数组的方法,即如果最初附加 8 个文件,然后用户决定在提交表单之前添加另外 4 个文件,使总数达到 12。仅当一次性添加超过 10 个时才会发生当前切片。
我有一个decode()在循环内运行的方法(对于附加的每个图像),该方法执行前端验证,以及一个在promiseAllSettled()输出主要错误消息之前等待附加最后一个图像的方法,告诉用户检查上的特定错误页。
问题
\n如果用户最初附加的文件数小于 10,然后在提交表单之前附加更多文件,使其数量超过 10,那么如何根据附加的文件总数对数组进行切片?
\nconst attachFiles = document.getElementById('attach-files'), // file input …Run Code Online (Sandbox Code Playgroud)