Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 添加好友功能-已添加好友_Php_Mysql - Fatal编程技术网

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

Php 添加好友功能-已添加好友,php,mysql,Php,Mysql,我有一个添加朋友的应用程序。我需要检查我的脚本,如果用户已经是朋友了。我想我可以数一数。我喜欢这样: 但是当我加上一个朋友的时候就没关系了。它增加了它,一切都很好。但当我尝试添加另一个时,它说我们已经是朋友了。我猜这是因为它在计算我的ID(ven_til_ID)在表中列出的次数 您缺少一个逗号: SELECT username,ven_til_id COUNT(*) AS num FROM ... 应该是 SELECT username,ven_til_id, COUNT(*) AS

我有一个添加朋友的应用程序。我需要检查我的脚本,如果用户已经是朋友了。我想我可以数一数。我喜欢这样:


但是当我加上一个朋友的时候就没关系了。它增加了它,一切都很好。但当我尝试添加另一个时,它说我们已经是朋友了。我猜这是因为它在计算我的ID(ven_til_ID)在表中列出的次数

您缺少一个逗号:

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

SELECT
 username,ven_til_id, COUNT(*) AS num  FROM ...
此外,您对计数字段的引用不正确-它应该是第三列或
$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\u num\u rows()
(我认为这是正确的函数名)

澄清: 改变

选项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,那么当你添加代码片段时,只需缩进它(或者选择所有内容并按下
code
按钮)-它应该正确地保留格式。我做到了。我试过了。我不知道为什么会这样。很抱歉。这是因为在第一次SQL查询中,
ventil\u id
后缺少逗号吗?或者这只是一个复制/粘贴错误?@Kolind不需要道歉,我只是不确定你是否知道:)@Kolind我已经解决了问题,并将工作版本放到了聊天中。您在SQL查询中遗漏了
$username
周围的撇号,很可能也遗漏了一个group by。我觉得它不起作用。我的代码在问题中看起来像@Basiclife(我已经编辑过了)@Basiclife也许我需要一个如何计算的解释?我不想检查,是否有任何行的用户名和ID与我试图添加的用户+我的用户ID相同。可能我的问题是,计数处理int。。因此它需要ven_-til_-id,即用户id。然后确定我不能再添加朋友,因为它已经列出了1次?@Marc很好地发现了-我在第一次通过时就完全忽略了这一点:/我已经在我的答案的选项2下添加了它,谢谢
                    $row = mysql_fetch_row($result);
                    $num = $row[2];
                    $num = mysql_num_rows($result);
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