对于图像上传,我应该在MYSQL数据库中添加一个字段进行检查,还是简单地使用PHP检查图像是否存在?

对于图像上传,我应该在MYSQL数据库中添加一个字段进行检查,还是简单地使用PHP检查图像是否存在?,php,mysql,image,file-upload,Php,Mysql,Image,File Upload,我有一个简单的图像上传表单。当有人上传图像时,它是为足球池上传的,因此他们上传的图像总是附带一个$poolid 现在,我正在使用poolid命名上传的图像。例如,如果有人上传了一个图像,它可能会被命名为P0714TYER7EN.png 该应用程序将要做的就是,当它输出足球池的页面时,它将检查该池是否存在图像,如果存在,它将显示该图像。它是这样检查的: if (file_exists("uploads/".$poolid.".png")) { //code to show it } 在计划此操

我有一个简单的图像上传表单。当有人上传图像时,它是为足球池上传的,因此他们上传的图像总是附带一个
$poolid

现在,我正在使用poolid命名上传的图像。例如,如果有人上传了一个图像,它可能会被命名为P0714TYER7EN.png

该应用程序将要做的就是,当它输出足球池的页面时,它将检查该池是否存在图像,如果存在,它将显示该图像。它是这样检查的:

if (file_exists("uploads/".$poolid.".png")) { //code to show it } 
在计划此操作时,我的第一个想法是在MYSQL数据库的表中为所有池信息添加一个名为“image”的字段(称为
pools
),如果没有上传,我将存储一个图像名称(P0714TYER7EN.png)或空值。然后我将检查数据库中的该字段,以确定图像是否存在

但是我意识到我实际上不需要在数据库中存储任何东西,因为我可以简单地使用上面的PHP
file\u exists
检查是否有图像

换句话说,在数据库中有一个字段似乎是多余的

一切都是这样做的(即数据库中没有字段),但我想知道这是否出于某种原因是一种不好的做法

如果有人认为我应该在数据库中保留一个字段,请分享你的想法。我只是想用正确的方法来做


谢谢。

您也可以使用mysql中的blob数据类型。在那里,您可以将图像保存为足球池数据旁边的二进制数据

因此,当您想要加载足球池时,只需启动一个sql语句并检查它是否返回结果,如果返回结果,则从数据库加载图像并显示数据,否则将抛出错误

如果您有非常频繁的访问,您可以简单地将图像放入一个单独的表中,并独立于足球池的数据加载图像。另外,在图像上设置一些缓存头并将其放在一个单独的文件中,这样您就可以简单地将图像的主键保存在足球表中。然后,您想显示网页,只需加载另一个文档,将图像的主键传递给它,图像将在那里加载,或者如果浏览器缓存中有图像,则将从缓存中加载图像,而不查询数据库


通过这种方式,您还可以获得更好的数据和图像一致性。

您还可以使用mysql中的blob数据类型。在那里,您可以将图像保存为足球池数据旁边的二进制数据

因此,当您想要加载足球池时,只需启动一个sql语句并检查它是否返回结果,如果返回结果,则从数据库加载图像并显示数据,否则将抛出错误

如果您有非常频繁的访问,您可以简单地将图像放入一个单独的表中,并独立于足球池的数据加载图像。另外,在图像上设置一些缓存头并将其放在一个单独的文件中,这样您就可以简单地将图像的主键保存在足球表中。然后,您想显示网页,只需加载另一个文档,将图像的主键传递给它,图像将在那里加载,或者如果浏览器缓存中有图像,则将从缓存中加载图像,而不查询数据库


这样,数据和图像的一致性也更好。

您可以将图像上载到特定文件夹,也可以使用唯一的poolid。它应该很好用

问题:

您编写的代码非常有效。但问题是,如果第一次加载的图像是.png,第二次加载的文件是jpegjpg,那么文件存在不会检查这一点,因此它可能会失败

注意事项:

如果您已经注意检查上传的图像必须并且应该是png,那么文件_存在将非常有效

替代解决方案:

如果您没有检查图像类型是否为.png,那么我强烈建议您在表中选择一个布尔图像列,即是否上传图像或每次上传文件后可以设置的内容


这样可以确保下次您想要上传图像时,可以直接进入数据库表,查看是否设置了is_image_upload列。如果未设置,则上载或忽略或执行任何您想要的操作

将图像上载到特定文件夹,并使用唯一的poolid。它应该很好用

问题:

您编写的代码非常有效。但问题是,如果第一次加载的图像是.png,第二次加载的文件是jpegjpg,那么文件存在不会检查这一点,因此它可能会失败

注意事项:

如果您已经注意检查上传的图像必须并且应该是png,那么文件_存在将非常有效

替代解决方案:

如果您没有检查图像类型是否为.png,那么我强烈建议您在表中选择一个布尔图像列,即是否上传图像或每次上传文件后可以设置的内容


这样可以确保下次您想要上传图像时,可以直接进入数据库表,查看是否设置了is_image_upload列。如果未设置,则上载或忽略或执行任何您想要执行的操作

该方法在很大程度上取决于您正试图执行的操作。似乎您可以选择:

文件