2010-01-10 66 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"; 
}