2010-01-10 65 views
-1

爲什麼不能使用此代碼?我想在添加之前檢查用戶是否已經是朋友。檢查朋友關係是否已經存在

function addFriend() 
{ 
    global $userid, $friendid; 
    $check = mysql_query("SELECT * FROM friends WHERE userid = $userid AND friendid = $friendid"); 
    if (mysql_num_rows($check) == 1) 
    { 
     exit("Youre already friend with this user"); 
    } 
    else 
    { 
     $sql = "INSERT INTO friends (userid, friendid) VALUES ($userid, $friendid)"; 
     mysql_query($sql); 

     if ($sql) 
      echo "Success"; 
     else 
      echo "Failure"; 
    } 
} 

回答

1

這可能不是回答你的問題,但$sql永遠不會是假的,因爲你把它上面的3條線。

您可能希望將mysql_num_rows($check) == 1更改爲mysql_num_rows($check) >= 1因爲您的數據庫在字段對上沒有任何唯一限制。

0

變化:

$sql = "INSERT INTO friends (userid, friendid) VALUES ($userid, $friendid)"; 
mysql_query($sql); 
if ($sql) 
    echo "Success"; 
else 
    echo "Failure"; 
} 

到:

$sql = "INSERT INTO friends (userid, friendid) VALUES ($userid, $friendid)"; 
mysql_query($sql); 
if (mysql_affected_rows()) { 
    echo "Success"; 
else 
    echo "Failure"; 
} 

mysql_affected_rows()

由於您正在測試$sql是否爲空,您的第一個版本將始終返回成功,這不是因爲您剛爲其指定了非空值(作爲查詢的SQL)。

-1

固定它

沒有必須在朋友表

0

你嘗試,包括在查詢相反的情況也是任何auto_increcement?我相信朋友表表示按照請求的順序,誰是誰的朋友。所以如果我要求你作爲朋友,我會成爲用戶,但如果你要求我,我會成爲朋友ID。所以你還需要檢查userid = $ friendid和friendid = $ userid的位置。

不是嗎?很難從你的問題中發現問題到底是什麼。

注意:我不是PHP專家,所以我的回覆是嚴格針對Facebook API而不是PHP本身。剛纔陳述我可能會讓我的回答降級:-)

0

就像上面說的Mike B,$sql永遠不會是錯誤的,因爲您將它設置爲查詢。您需要將查詢結果設置爲變量,然後測試:

$result = mysql_query($sql); 
if ($result) 
    echo "Success"; 
else 
    echo "Failure"; 
}