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

Php 在我的数据库中实现图片表的最佳方法,php,mysql,Php,Mysql,我有一个有很多图片的网站。目前,我只是把所有的图片都放在服务器上,我使用php获取目录中的文件,并将它们全部显示在表中。然而,当我这样做的时候,图片是按字母顺序显示的,这是我不想要的。我希望它们显示在我的插入时间。我想我可以创建一个表,其中数字字段设置为自动递增,然后是插入图片的文件名。把照片留在服务器上就行了。所以每次我插入一张图片,它都会插入一行数字和文件名。所以当我显示的时候,我只显示这个数字Desc,它应该给我最新插入的图片。这是最好的方法吗 谢谢你走对了方向。我会使用一个时间戳(类型为

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


谢谢

你走对了方向。我会使用一个时间戳(类型为
DATETIME
)来确定图片上传的确切时间,并根据它进行排序。递增的ID并不总是与插入时间相对应。

您可以通过自动递增的ID字段来实现,也可以存储时间戳并按这种方式排序。任何一个都是可以选择的,只要确保避免潜在的主键冲突。

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

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

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

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

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

按日期对文件进行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)
}

我认为没有必要这样做。按照文件系统中文件的实际创建日期进行排序就足够了。根本不需要另一个表。拥有一个关于输入文件系统的文件的信息表总是一个好主意。你如何处理这些信息是另一回事。是的,您可以按时间戳排序,但是拥有一个表是一个更健壮的解决方案。时间戳数据类型也可以默认为当前的时间戳。