2012-12-10 48 views
0

我目前有一個名爲[朋友]的表格,而這個表格就是這樣的。MySQL添加好友|刪除朋友 - 關注|取消關注系統效率

+ ----------------------------------- 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知識幾乎不可能。

+3

** Heads up!** PHP的未來版本是*棄用和刪除mysql_'系列函數。現在將是[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli)的好時機。 – Charles

+1

謝謝@charles,我目前正在閱讀PDO並瞭解更多信息,因爲我仍在學習。但是,我仍然在尋找關於上述問題的答案! –

回答

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 obvoiusly在add_friend,兩個ID 不連接然後彼此的情況下,只有你會調用這個函數,所以不需要使用查詢。

而且在情況下刪除好友,兩個ID 相互連接那麼只有你會調用這個函數。

所以,我建議刪除這兩行。而且,你的方法很好,所以繼續前進。

+0

對不起,這兩個id在add_friend中沒有連接,但是在remove_friend中它們不是,你有什麼更好的建議可以繼續下去!? –

+0

很顯然,這兩個id不會互相連接,或者我會說他們不是彼此的朋友,只有你會讓他們成爲朋友,否則你會把他們表現爲朋友。 –

+0

謝謝,我明白了:) –