让mySQL在PHP中完成工作或处理它

时间:2017-12-30 08:24:22

标签: php mysql

我使用php上传图像并使用后缀创建同一图像的多个克隆,如此

image154547457_thumb.jpg
image154547457_small.jpg
image154547457_400x500.jpg
image154547457_800x1000.jpg
image154547457_100x125.jpg
image154547457_retina.jpg
...

我使用文件名的最后2个字符将克隆图像存储在文件系统中,所以我最终没有一个大目录,如此

/gallery/files/7/5

我在mySQL表中存储对图像的引用,如此

image (image_id, caption, filedir, filename, fileext)


image  caption filedir filename         filext
------------------------------------------------------------
1      ....    7/5/    image154547457   jpg

然后,我检索项目所需的图像,如此

SELECT i.image_id, i.caption, CONCAT(i.filedir, i.filename, '_thumb', '.', fileext) thumb, CONCAT(i.filedir, i.filename, '_retina', '.', fileext) retina, CONCAT(i.filedir, i.filename, '_800x1000', '.', fileext) _800
FROM image i
WHERE i.image_id = 1

这是我需要专家建议的地方。

我也可以在mySQL中使用文件名,就像这样

image   caption  filename
-----------------------------------
1       ....     image154547457.jpg

像这样检索

SELECT i.image_id, i.caption, i.filename
FROM image i
WHERE i.image_id = 1

并使用PHP完成剩余的过程,如此

$filename = substr($filename, 0 , strrpos($filename, ".")); 
$filedir = substr($filename, -1) . '/' . substr($filename, -2, 1) . '/';
$filext = substr($filename, strrpos($filename, ".") + 1);

thumb = $filedir . $filename . '_thumb' . '.' . fileext;
retina = $filedir . $filename . '_retina' . '.' . fileext;
_800 = $filedir . $filename . '_800x1000' . '.' . fileext;

假设我每页检索100张图片。

哪种更贵和/或更好的方法? 直接从MYSQL(2个额外的列)检索信息或使用PHP来处理它(在mysql表中不需要'filedir'和'fileext'列)?

我在这里做了一些研究,但我无法找到这个逻辑问题的答案。

0 个答案:

没有答案