2

我目前正在尝试编写一个 Networking 网站并被困在溢出功能阶段。这是它的工作原理,该网站的每个注册用户只允许将两个人推荐到网络中(他们有一个推荐链接)。但是,如果会员提供了他/她的链接来推荐两个以上的人,并且注册的人想要使用该链接进行注册,则应该发生以下事件:

1. PHP 应查询 MYSQL 数据库以确定赞助商是否推荐了最多两 (2) 人,如果是,则 MYSQL 将搜索随机赞助商用户名来替换初始赞助商。2.如果相反,MYSQL检查发现赞助商还没有推荐两个人,那么MYSQL将继续使用赞助商用户名作为新的注册会员。

下面是数据库表的样子:

我的 MYSQL 数据库快照

表名是affiliateuser,referedby 列是为每个成员显示赞助商的位置,我需要会员在referedby 列下只能作为赞助商出现两次(最多)。看上表,用户 yelefash2 用他的链接推荐了两个人,而用户 mipe305 没有用他的链接或用户名推荐任何人,我需要设置一个平衡,如果第三人试图用 yelefash2 的用户名/推荐链接注册,让PHP/MYSQL 将他替换为尚未推荐两个人的用户(可能是随机选择或其他方式),这将自动将成员作为推荐溢出到可用空间,例如 mipe305

我尝试了以下 PHP 代码,但它不起作用:

 $ref=mysqli_real_escape_string($con,$_POST['referral']);//data from the referrer webform field//

$result = mysqli_query($con,"SELECT count(*) FROM  affiliateuser where username = '$ref'");

$row = mysqli_fetch_row($result);
$numrows = $row[0];
if ($numrows==0)
{
$msg=$msg."Sponsor/Referral Username Not Found..<BR>";//for checking if provided sponsor exits
$status= "NOTOK";
}

$reea = mysqli_query($con,"SELECT username,referedby, COUNT(username) FROM affiliateuser GROUP BY referedby ASC");
$reeeb = mysqli_query($con,"SELECT count(*) FROM affiliateuser where referedby='$ref' ");
$row = mysqli_fetch_row($reeeb););
$refcount = $rowp[0];



if ($refcount ==2 OR $refcount >2)
{$reee = mysqli_query($con,"SELECT username,referedby, COUNT(username) FROM affiliateuser GROUP BY referedby ASC");
$reeel = mysqli_query($con,"SELECT referedby FROM affiliateuser where COUNT(username)<2 ");
$row = mysqli_fetch_row($reeel);
$refpick = $row[0];
}
else
{$refpick=mysqli_real_escape_string($con,$_POST['referral']);}

我知道我一定做错了什么,我对 MYSQL 和 PHP 有点陌生,任何帮助都将不胜感激

4

1 回答 1

0

改变了我的遮阳篷:

  $reea = mysqli_query($con,"SELECT username,referedby, COUNT(username) 
   FROM affiliateuser GROUP BY referedby ASC");

没有做任何事情。但它可能是页面中其他地方的东西,而不是在这篇文章中。

但是您的结果数组变量是错误的。

  $refcount = $rowp[0];
 should be 
  $refcount = $row[0];

因为 $rowp 没有在任何地方定义......也是它的行结果:

   $row = mysqli_fetch_row($reeeb););

是错的。它应该是:

   $row = mysqli_fetch_row($reeeb);

最后,else条件:

  {$refpick=mysqli_real_escape_string($con,$_POST['referral']);}

可以简化为:

  {$refpick=$ref;}

关于比较的一件事,

  the if ($refcount ==2 OR $refcount >2) should work,
   but if (($refcount ==2) OR ($refcount >2)) will guarantee the correct operation. 
   I personally use || (double pipe) instead of "or" personally. 
   so I would have wrote it as:  if (($refcount ==2) || ($refcount >2)) { 
于 2017-06-10T16:23:55.910 回答