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


Best way to implement a pictures table in my database

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

感谢

听起来不错。如果你真的想了解技术,你可以使用时间戳字段并按此排序。然而,听起来你的想法会很好,只要你在插入图像时自动递增。

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

您可以通过auto_increded id字段来完成,也可以存储时间戳并按这种方式排序。任何一种都是可以选择的,只要确保避免潜在的主键冲突即可。

使用filemtime()可以获得文件的时间戳。因此,在使用(例如)readdir()获得文件后,可以使用uasort()或其他php排序函数之一定义排序。没有数据库是必要的。

将指向文件的指针存储在数据库中是实现此操作并将图像保存在文件系统中的最佳方式。至于创建的日期,您可以使用DATETIME来跟踪它创建的时间,然后按照您想要的顺序查询它们。

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

如果您计划在系统中拥有数千张(或更多)照片,则需要在硬盘上存储实际图像文件时使用数据库表来存储元数据。

点击10000次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)
}