1

我有一个包含各种用户的表(用户)。如果您推荐某人注册,它会在与您的个人资料中的 (id) 类似的字段 (refcode) 中创建一个推荐 id。现在,当他/她登录时,我想为推荐人的个人资料增加价值。

所以基本上我需要为未登录的用户增加价值。

这是我的代码。


$sql="SELECT * FROM users";

$val=(2);
$result=mysql_query($sql,$bd);


$data=mysql_fetch_assoc($result);

while ($array = mysql_fetch_array($result)) {
 // equate the value to a variable to use outside
 // this while loop
 $acc_balance = $array['com_balance'];
 $comm = $array {$_SESSION['refcode']};
 $commision = $array['id'];
 }

 $remainder = $acc_balance + $val;

 $update_query = mysql_query("UPDATE users SET com_balance = '".      mysql_real_escape_string($remainder) ."'
 WHERE id=refcode");

if ($update_query) {
print ""
4

2 回答 2

0

首先,改变:

$sql="SELECT * FROM users";

因为您不需要遍历整个表来获取登录用户的详细信息。这样的事情应该可以解决问题:

$yourID=3;// Assume this is sanitized data from a cookie or a login script.
$sql="SELECT * FROM users where userID=$yourID";

其次,当您验证推荐下一个用户的用户的登录时,只需添加如下查询:

$update_query = mysql_query("
    UPDATE users SET 
        com_balance = (select * from (
            select com_balance from users where id=$yourID))");

这将使用来自推荐用户的余额更新新用户(这似乎是您想要的)。您将需要使用双子查询来克服烦人的 mysql 错误/功能,除非您将其封装在第二个子查询中,否则它无法从同一表上的子查询更新表。

于 2012-09-25T12:47:21.350 回答
0

一堆变化,用数字标记:

   $sql="SELECT * FROM users where userID='$_SESSION['refcode']'"; //#1

   $val = 2; //#2 : Why do u need the ()?
   $result = mysql_query($sql,$bd);

   $data=mysql_fetch_assoc($result);

   while ($array = mysql_fetch_array($result)) {
  // equate the value to a variable to use outside
  // this while loop
   $acc_balance = $array['com_balance'];
   $comm = $array{$_SESSION['refcode']}; //#3: I am not sure what you're doing here? 
   $commision = $array['id'];
   }

   $remainder = $acc_balance + $val;       

   $update_query = mysql_query("UPDATE users SET com_balance = '".              mysql_real_escape_string($remainder) ."'
   WHERE id=refcode"); // #4: where are you defining refcode? if variable, the query needs to be WHERE id='$refcode'");

   if ($update_query) {
     print "Update successful";
于 2012-09-25T13:14:40.843 回答