0

現在、[friends]という名前のテーブルがあり、これは行などに使用されます。

+ ----------------------------------- friend_id | friend_one | friend_two | 役割--------------------------------------------++ --- -------------------------------------------------- -------------------------------------------------- ------------------------- +

これはフォローとフォロー解除のシステムですが、それほど素晴らしいものではありません。

友達の追加と削除については、これをより効率的にして、データベースからの読み取りをはるかに簡単にし、信頼性を高める方法を知りたいと思います。

// Add Friend
public function Add_Friend($uid,$fid){
    $fid            = mysql_real_escape_string($fid);
    $q          = mysql_query("SELECT friend_id FROM friends WHERE friend_one='$uid' AND friend_two='$fid' AND role='fri'");

    if(mysql_num_rows($q) ==0 ){
        $query      = mysql_query("INSERT INTO friends(friend_one,friend_two,role) VALUES ('$uid','$fid','fri')") or die(mysql_error());    
        $query      = mysql_query("UPDATE users SET friend_count=friend_count+1 WHERE uid='$uid'") or die(mysql_error());   
        return true;
    }
}

// Remove Friend
public function Remove_Friend($uid,$fid){
    $fid            = mysql_real_escape_string($fid);
    $q          = mysql_query("SELECT friend_id FROM friends WHERE friend_one='$uid' AND friend_two='$fid' AND role='fri'");

    if(mysql_num_rows($q) == 1){
        $query      = mysql_query("DELETE FROM friends WHERE friend_one='$uid' AND friend_two='$fid'") or die(mysql_error());
        $query      = mysql_query("UPDATE users SET friend_count=friend_count-1 WHERE uid='$uid'") or die(mysql_error());   
        return true;
    }

}

すべてが正常に機能しています。簡単にすることでどうすればよいかを知りたいだけです。現在、フォローしている友達の数を読み込もうとしていますが、SQLに関する現在の知識ではほとんど不可能です。

4

1 に答える 1

0

このクエリを実行しないことをお勧めします

$fid            = mysql_real_escape_string($fid);
$q          = mysql_query("SELECT friend_id FROM friends WHERE friend_one='$uid' AND friend_two='$fid' AND role='fri'");

bcoz 明らかに add_friend の場合 2 つの ID は互いに接続されていないため、この関数を呼び出すだけなので、クエリを使用する必要はありません。

また、remove friendの場合、2 つの ID が相互に関連付けられているため、この関数を呼び出すのはあなただけです。

したがって、2行を削除することをお勧めします。また、あなたのアプローチは素晴らしいので、これを進めてください。

于 2012-12-10T06:52:52.577 に答える