我有一个照片画廊的 MYSQL 数据库; 每行包含一个字段,其中包含该图库中包含的图像列表,例如:
1,5,134,13,5
这些是照片的 ID。相同的 image_id 可以包含在其他画廊中。
当我删除照片时,我需要从包含它的图库中删除相应的 id。 在 PHP 中执行此操作的最佳方法是什么?
我想过将字段 EXPLODE 成一个数组,删除值,然后 IMPLODE 返回并更新数据库,但我很确定有更好的方法吗?
谢谢, 帕特里克
感谢 Galen 和所有人。
我是新手,对规范化知之甚少(=一无所知)。如果我理解正确的话,你建议有 2 个表:1 个包含关于照片的所有信息(例如 image_id、名称、标题等),另一个表只包含使用该照片的画廊列表,例如:
gallery_id | image_id
1 3
1 7
1 5
2 3
2 8
因此,通过从此表中删除 WHERE image_id=3,我将从两个画廊中删除该照片。 但是,在这种情况下,我会管理照片的顺序吗?有了一个字符串,我就可以得到一个有序的照片列表。
最佳答案
这就是你 normalize 的确切原因你的 table 。然后你可以运行查询
delete from images where image_id=5;
delete from imageXgallery where image_id=5;
图像表包含所有图像信息。 imageXgallery 表只包含图片到图库的引用。
我建议您阅读规范化并更新您的表格。
编辑:要允许图像排序,请在您的 imageXgallery 表中添加一个 order
字段。当您从表中检索图像时,您可以按该列排序。
关于php 在字符串中找到一些文本(如果它在那里),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757822/