将图像存储在mysql数据库中

时间:2010-11-09 12:20:46

标签: php mysql

在DB中唯一存储和图像名称的最佳方式是什么,假设两个人具有相同的图像名称,或者同一个用户上传相同的图像两次。我如何管理这样的scenerios,以便当我想执行更新,删除等操作时,我最终不会删除这两个图像或全部。我的数据库是MySQL。

编辑 - 好的,现在由于某种原因,我为所有图像生成了一个唯一的时间戳,一切都在localhost上工作,但是当我把它带到网上它不起作用,我无法删除它,但它可以脱机工作好。

谢谢 @cybeormin

5 个答案:

答案 0 :(得分:1)

在任何表格中,我都会推荐一个ID列,即自动增量并设置为主要字段。这样,尽管用户有两个同名的图像,但所有行都是唯一的。

答案 1 :(得分:0)

在图像上添加引用计数。当您想要删除图像时,只需减少引用计数。当refcount命中0时,你删除了real(或者让cron job删除它)。

答案 2 :(得分:0)

我会丢弃原始图片名称,为每个图片指定一个唯一ID,并将原始名称存储在数据库中。

答案 3 :(得分:0)

在mySQL数据库中,为图像上传创建一个表,创建一个设置为AUTO_INCREMENTINT(整数)的ID列,并将其设为PKEY(主键)。

这意味着您的ID会在添加新内容时自动创建和生成,并且无论是否添加相同的图像,都始终是唯一的。

其他字段可以捕获其他图像信息(文件名,'给定'名称,文件大小,文件类型和图像本身的BLOB字段),然后您甚至可以添加基于任何组合构成的伪造ID因素......你认为合适吗?

答案 4 :(得分:0)

将唯一键(主键)与每个条目相关联。类似的东西:

fileId | file_name | file

并将fileId设置为自动递增和主键。然后,您可以在“用户”表上(如果您有类似的内容)只需将fileId作为外键引用。

userId | ... | fileId | ...

然后,如果您需要删除该文件,只需使用fileId找到您要删除的文件。