0

我有一个 mysql 表,我在其中跟踪成员和他们的朋友,在该表内我有一个名为“朋友”的字段。因此,如果成员 frends 请求另一个成员,则该字段将更新为具有各自 id 的两者。

例如:如果成员 id: 125 朋友请求成员 id: 10 然后我插入字段 10, 125 为成员 125 和 125, 10 为成员 10。为了更好地解释这里是我的代码。

问题是,如果用户没有任何以前的朋友,查询仍然会更新朋友字段并插入“Array, 125”而不是插入“10, 25”。

$friends = '';

$friendArray = explode(",", $friendArray);
$friendCount = count($friendArray);

if($friendArray != "" && !is_null($friendArray))
{
    $sum = '<h1> '.$friendArray.'\'s friends('.$friendCount.') </h1>';
}

但是 count 变量输出 1 而不是 0!并且该字段为NULL。

4

2 回答 2

2

这对我来说听起来像是一个糟糕的设计。它打破了正常的形式。您不必解析该列来找出关系。

更好的解决方案是使用外键。一个人可以有很多朋友,所以在你的模式中建立一个 1:m 的关系。

于 2012-06-02T18:42:11.790 回答
2

不要这样做。这不是关系数据库设置 - 这更像是 MongoDB 类型的设置。对于 MySQL,创建一个“friends”表并创建数据映射。

+----+-------------+-------------------+
| ID | User_ID     | Friend_ID         |
+----+-------------+-------------------+
| 1  | 102         | 213               |
| 2  | 64          | 23                |
| 3  | 4           | 344               |
| 4  | 102         | 2                 |
| 5  | 102         | 90                |
| 6  | 64          | 88                |
+----+-------------+-------------------+

这假设它是一种相互的友谊。如果朋友 ​​B 不想和朋友 A 成为朋友,那么朋友 A 就不能和朋友 B 成为朋友。

于 2012-06-02T18:42:30.967 回答