为什么这段代码不起作用?我想在添加之前检查用户是否已经是朋友。
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";
}
}
答案 0 :(得分:1)
这可能无法解答您的问题,但$sql
永远不会出错,因为您将其设置为3行以上。
如果您的数据库在字段对上没有任何唯一约束,您可能希望将mysql_num_rows($check) == 1
更改为mysql_num_rows($check) >= 1
。
答案 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";
}
您的第一个版本将始终返回成功,因为您正在测试$sql
是否为空,这不是因为您刚刚为其分配了非空值(作为查询的SQL) )。
答案 2 :(得分:0)
您是否尝试在查询中包含相反的情况?我相信朋友表根据请求的顺序表示谁是谁。所以,如果我要求你作为朋友,我会成为用户,但如果你要求我,我会成为朋友ID。因此,您还需要检查userid = $ friendid和friendid = $ userid。
的位置可能是吗?很难从你的问题中看出究竟是什么问题。
注意:我不是PHP专家,所以我的回答是严格的Facebook API,而不是PHP本身。只是说明我可能会将我的答案降级: - )
答案 3 :(得分:0)
就像Mike B上面所说的那样,$sql
永远不会是假的,因为你将它设置为查询。您需要将查询结果设置为变量,然后测试:
$result = mysql_query($sql);
if ($result)
echo "Success";
else
echo "Failure";
}
答案 4 :(得分:-1)
修好了
朋友表中没有任何auto_increment