php 在字符串中找到一些文本(如果它在那里)

标签 php mysql string

我有一个照片画廊的 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/

相关文章:

php - youtube api maxResults

php - Laravel 虚拟服务器路由不起作用

mysql 从多个表中选择但没有连接

sql - 更改没有主键的表中的每条记录?

c - 使用 cstdio 读取键盘输入

php - 当我在 Laravel 中的 mysql 原始查询的 LIMIT 部分使用绑定(bind)时,为什么会出现 SQLSTATE[42000] 错误?

javascript - 不是那么简单的正则表达式(对我来说)

java - 结果集代码没有被执行

objective-c - 将 UTF8 字符串中的变音符号从 C/Obj-C 转义为 javascript

python - 在列表中,如何将每个字符串(混合特殊字符)分隔成单个字符?