在一个MySQL列单元中存储多个Info

时间:2015-07-09 09:06:53

标签: php mysql

我有一个带有评论功能的照片查看器,每个人都可以对Facebook这样的照片发表评论。

1 - 我的问题是,是否可以根据照片ID将所有评论都放在MySQL的一个单元格中,例如:

PhotoId | Path      | Date       | Comments
198     | p/car.png | 01/02/2015 | <John, profile link'www.example.com/john', Nice Photo>
                                 | <Charles, profile link'www.example.com/Charles', Nice Photo>
                                 | <Smith, profile link'www.example.com/Smith', Nice Photo>
                                 | <Mark, profile link'www.example.com/Mark', Nice Photo>
                                 | <Max, profile link'www.example.com/Max', Nice Photo>
________________________________________________________________________________________________
199     | p/pen.png | 01/02/2015 | <Mike, profile link'www.example.com/john', Write well>
                                 | <Alex, profile link'www.example.com/Charles', That is your pen>

2 - 是否可以通过评论列中的评论员名称删除特定 PhotoId 的任何评论。

如果对这个问题有任何答案,那么它是好的,如果没有,那么请指导我。

2 个答案:

答案 0 :(得分:1)

可以在 1 中执行您要求的操作 - 使用serializejson_encode。如果不提取数据并对其进行反序列化或解码,则无法在 2 中执行您所要求的操作。

这样做并不好。您最好创建第二个表,将表注释与第一个表的PhotoId列相关联。更好的性能和功能,因为您可以依靠MySQL为您完成大部分工作。

//编辑 - 使用序列化的示例

将信息输入数据库。

$data_as_string = serialize(array(
    0 => array('John', "profile link'www.example.com/john'", 'Nice Photo'),
    1 => array('Charles', "profile link'www.example.com/Charles'", 'Nice Photo'),
    2 => array('Smith', "profile link'www.example.com/Smith'", 'Nice Photo'),
    3 => array('Mark', "profile link'www.example.com/Mark'", 'Nice Photo'),
    4 => array('Max', "profile link'www.example.com/Max'", 'Nice Photo')
);

将其作为数组检索。

$data_as_array = unserialize($row['comments']);

答案 1 :(得分:0)

一切皆有可能。

建议

  • 制作两张桌子。一个用于存储照片,另一个用于评论,您可以使用外键链接照片和评论。
  • 您应该在评论表中保留评论员姓名,以便您可以通过评论员姓名
  • 删除评论