0

メンバーとその友達を追跡するmysqlテーブルがあり、そのテーブル内に「friends」というフィールドがあります。したがって、メンバーが別のメンバーにリクエストを送信すると、フィールドはそれぞれのIDで両方に更新されます。

例:id:125の友達がid:10のメンバーをリクエストした場合、フィールド10に挿入します。メンバー125の場合は125、メンバー10の場合は125、10を挿入します。これが私のコードです。

問題は、ユーザーに以前の友達がいなかった場合でも、クエリは友達フィールドを更新し、「10,25」を挿入する代わりに「Array、125」を挿入することです。

$friends = '';

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

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

しかし、カウント変数は0ではなく1を出力します!そのフィールドはNULLです。

4

2 に答える 2

2

これは私には悪いデザインのように聞こえます。通常の形を壊します。関係を見つけるためにその列を解析する必要はありません。

より良い解決策は、外部キーを使用することです。人には多くの友達がいる可能性があるため、スキーマに1:mの関係を構築します。

于 2012-06-02T18:42:11.790 に答える
2

これをしないでください。これはリレーショナルDBセットアップではありません-これはMongoDBタイプのセットアップに近いものです。MySQLの場合、「友達」テーブルを作成し、データマップを作成するだけです。

+----+-------------+-------------------+
| 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 に答える