添加好友功能-已添加好友


Add Friends Function - friend already added

我有一个添加朋友的应用程序。我需要有我的脚本来检查,如果用户已经是朋友。我以为我能做到。我这样做:

            $username = $_GET[user];
            $ven_til_id = $_SESSION['userID'];
            $num = 1;
            if(isset($_GET['add_friend'])){
                $check=("SELECT username,ven_til_id, COUNT(*) AS num FROM friends WHERE username=$username AND ven_til_id=$ven_til_id GROUP BY username,ven_til_id")or die(mysql_error());
                $result=mysql_query($check);
                    if(!$result){
                        echo "Cant run query.";
                    } else {
                        $num = mysql_num_rows($result);
                    }
                    if($num>0){
                        header("Location: /profil/$username?add_error");
                } else {
                $sql=mysql_query("INSERT INTO friends (username,ven_til_id)VALUES('$username', '$ven_til_id')")or die(mysql_error());
                header("Location: /profil/$username");
                }
            }
            ?>

但是当我添加一个朋友时,它很好。它添加了它,一切都很好。但当我想再加一个的时候,它说我们已经是朋友了。我猜这是因为它在计算我的ID (ven_til_id)在表中列出的次数。

你少了一个逗号:

SELECT
 username,ven_til_id COUNT(*) AS num  FROM ...
应该

SELECT
 username,ven_til_id, COUNT(*) AS num  FROM ...

此外,您对count字段的引用是不正确的-它应该是第三列或$row[2]

您可能希望通过名称引用字段来使代码更健壮,例如$row['num']

最后要确认的一件事是,使用计数检索的值被视为整数而不是字符串。我不认为是这里的问题所在,但是您可能需要显式地强制转换它以避免以后可能出现的问题,例如…

$num = (int) $row[2];

选项1 只需选择适当的行,看看您返回了多少条记录…

SELECT  username,
    ven_til_id
FROM    friends
WHERE   username=$username
AND     ven_til_id=$ven_til_id

然后计算使用PHP返回的记录数量-例如mysql_num_rows()(我认为这是正确的函数名称)

澄清:

                    $row = mysql_fetch_row($result);
                    $num = $row[2];

                    $num = mysql_num_rows($result);

选项2

让MySQL为你做计数-在这种情况下,你需要告诉它将多个记录分组在一起…

SELECT  username,
    ven_til_id,
    COUNT(*) as Num
FROM    friends
WHERE   username=$username
AND     ven_til_id=$ven_til_id
GROUP BY username,
    ven_til_id

然后读取第一行的第三个值(num),您将得到一个计数

注意:如果你只想要一个1或0

,第二个方法可能是多余的。