在数据SQL的一个单元格中创建分隔值

时间:2013-02-27 08:18:33

标签: php sql postgresql

我想创建一个朋友表,其中包含当前用户的用户ID以及当前用户朋友的其他用户ID。

有点像这样:

userid    friends
456       345; 745; 769;

我希望每当当前用户结交朋友时,能够更新[在旧版后插入新值]这个数据。

我见过关于分隔符和内爆/爆炸数据的主题,但我似乎无法确定如何开始这个。

任何想法,任何人?

3 个答案:

答案 0 :(得分:1)

重新考虑您的方法并使用一个简单的表格,每个用户ID /朋友对都有一条记录。

userid    friends
456       345
456       745
456       769

这样可以轻松地从中选择数据并进行维护。

答案 1 :(得分:0)

如果必须保留现有结构。添加好友:

  1. 检查朋友是否存在于当前朋友列表中
  2. 假设$rs['friends']包含345; 745; 769;,新朋友ID为999

    // remove trailing `;`
    $friend_list = substr($rs['friends'], 0, strlen($rs['friends'])-1);
    $friends = explode('; ', $friend_list);
    if(in_array(999, $friends)) {
      // friend exists
    } else {
      $friend_list .= '; 999;';
      // then save back to DB
    }
    

    但是,我建议使用关系表

答案 2 :(得分:0)

好吧,我还在学习。你的所有意见都非常有用。谢谢大家!我会考虑每一个并捕获更多的想法。