在我的数据库中实现图片表的最佳方法

时间:2012-04-05 15:54:23

标签: php mysql

我有一个网站,里面有很多图片。目前我只是在服务器上有所有图片,我使用php获取目录中的文件,并在表格中显示所有文件。但是,当我这样做时,图片按字母顺序显示,我不想要。我希望它们显示我的插入时间。我以为我可以创建一个表,其中数字字段设置为自动递增,然后是插入图片的文件名。然后将图片留在服务器上。因此,每次插入图片时,都会插入一个带有数字和文件名的行。因此,当我显示时,我只显示那个数字描述,这应该给我最新插入的图片。这是最好的方法吗?

由于

7 个答案:

答案 0 :(得分:2)

听起来不错。如果您真的想获得技术,可以使用时间戳字段并按顺序排序。但是,只要您在插入图像时自动增加,听起来您的想法就可以正常工作。

答案 1 :(得分:0)

你走在正确的轨道上。我使用时间戳(类型为DATETIME)来确定图片上传的确切时间,并按此排序。递增ID并不总是与插入时间相对应。

答案 2 :(得分:0)

您可以通过auto_incremented id字段执行此操作,也可以存储时间戳并按此顺序排序。任何一个都是可以选择的,只需确保您避免潜在的主要密钥违规行为。

答案 3 :(得分:0)

使用filemtime(),您可以获得文件的时间戳。因此,在使用(例如)uasort()获取文件后,可以使用readdir()或其他一个php排序函数定义排序。不需要数据库。

答案 4 :(得分:0)

在数据库中存储指向该文件的指针将是最好的方法,并将图像放在文件系统中。对于创建的日期,您可以使用DATETIME跟踪创建的时间,然后按照您想要的顺序查询它们。

答案 5 :(得分:0)

我认为不需要这样做。在PHP中必须有一种方法来获取所有文件列表并按创建的日期排序。由于此文件将上传到您的服务器,因此date_created时间将是您服务器上创建的日期;因此,不需要新的表和数据库调用等。

答案 6 :(得分:0)

如果您计划在系统中安装数千(或更多)照片,则需要使用数据库表格存储元数据,同时将实际图像文件存储在硬盘驱动器上。

按日期对10,000个I / O匹配进行排序是很疯狂的。执行一个SQL查询以返回按日期排序的所有文件名的列表要好得多,因为MySQL可能能够将整个表放入内存中。

table image
{
    id
    user_id (if images belong to certain users)
    path (the file system path and/or filename)
    created (timestamp)
}