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