php - (PHP)如果尚未创建帖子的ID,如何将其附加到文件名?
问题描述
1)用户正在创建帖子,帖子的ID尚未创建,仅在创建帖子的页面中
2)用户通过ajax上传图片
我想做的是附上帖子的ID,因为当帖子被删除时,具有该ID的文件也需要删除,但是我该如何以某种方式绑定它们
预测mysql的下一个ID是不安全的,因为它可能随时被其他用户添加其他帖子而改变
将文件上传到临时文件夹,并在创建帖子后将它们移动到具有适当 ID 的上传文件夹,但是如果用户取消帖子创建,文件将保留在那里...
解决方案
好吧,我想你需要在你的数据库中创建另一个列,你的帖子也存储在图像表中:
- 让我们称之为标识符
- 然后当用户上传图像时,创建一个随机字符串并将其存储在会话或变量中。
- 现在将图像路径与相同的变量一起存储在 images 列中,并将变量添加到列identifier中。
- 您将唯一标识符存储在会话中,现在当用户提交其他帖子元素时,您可以从会话中获取它并更新第二个表中的标识符列。
要创建随机字符串,请使用以下函数:
function getRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
这种方式与文件或帖子元素首先出现的内容无关紧要,您对每个帖子都有一个唯一标识符,当您必须删除帖子时,只需从该行获取标识符并删除所有相关图像并删除记录从第二张桌子!
推荐阅读
- arrays - 如何显示带有索引的数组。我从 HTTP GET 请求中获取数组
- javascript - 停止将锚标记添加到当前 URL
- c# - 带有布尔谓词的动态 OrderBy 表达式
- docker - .dockerignore 无法在具有 !**/*.extension 模式的子目录中包含文件
- .net - 为什么从管道读取会阻塞进程?
- php - 在文本和页脚中输出 WordPress 简码的内容
- flutter - 关于持有另一个 BLoC 类的 BLoC 类
- cmake - 由于依赖关系,应用程序链接了同一库的 2 个版本
- javascript - 如何根据来自多个降价文件的数据编写 JSON 文件
- javascript - 如何使用正则表达式在文本中允许撇号