否则,如果条件比较PHP中的2个变量

时间:2017-02-27 10:09:48

标签: php mysql

我是php的新手到目前为止我写了这个推荐脚本:

<?php
ob_start();
include( $_SERVER['DOCUMENT_ROOT'] . '/config.php' );
mysql_connect(DB_HOST,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);
$id = $_REQUEST['id']; 
$uid = $_REQUEST['uid']; 
$oid = $_REQUEST['oid'];
$new = $_REQUEST['new']; 
$total = $_REQUEST['total'];
$sig = $_REQUEST['sig'];

// Secrete Key
$hash = 'myapikey';

// Output results
if ($sig == $hash) {


//Users point update query here  (it's working )
 $users = mysql_query("SELECT points FROM users WHERE id=".$uid);
 $rows = mysql_fetch_array($users);
 $user_points = $rows['points'];
 $query1 = mysql_query("update users set points=($user_points+$new) where id=".$uid );

//Updating referral coins (it's not working )
        $query2 = ("SELECT points, referral_id, level FROM users WHERE referral_id=".$uid );    
        $user_rows = mysql_query($query2);
        $all=mysql_fetch_array($user_rows,MYSQL_BOTH);
        if($all['referral_id'] != 0 && $all['level'] == 0){
             $lvl0 = $new*(15/100);
             $referal_points = $lvl0;
             $update_referral_points = ("update users set points = points + $referal_points where referral_id = ".$all['referral_id']);
             mysql_query($update_referral_points);

        } else if($all['referral_id'] != 0 && $all['level'] == 1){
             $lvl1 = $new*(25/100);
             $referal_points = $lvl1;
             $update_referral_points = ("update users set points = points + $referal_points where referral_id = ".$all['referral_id']);
             mysql_query($update_referral_points);

        }
            print "1\n";
        } else {
            print "0\n";
}
?>

脚本如何工作: 每当有人使用推荐代码注册时,我都会将推荐代码用户ID插入新用户的referral_id行,&amp;通过$ _REQUEST [''];我的应用程序向用户发送积分($ new)... $ query1工作正常,执行$ query2有问题,简而言之$ query2需要修复;出了问题,我无法弄清楚是否有专业人士可以帮助我,我会很感激...

数据库结构:

users table:
  id (AI)      name      points     Referral code     Referral id   Level
=========== ========== ========== ================== ============== ======
     1        user A       0          abcdef123             0         0
     2        user B      100         bvsuda897             1         1
     3        user C      500         vrtasio65             2         0
  

在上面的例子中,

使用用户B推荐代码= bvsuda897

1- 用户C 注册

2-现在用户B级别为1 所以每当用户C获得积分($ new)时,我的应用应该给你 ser B 25%硬币< / strong> 用户C $ new

  

问题   现在,当我的应用程序向用户C发送硬币时,用户B没有获得硬币,因为查询2中出现了错误

1 个答案:

答案 0 :(得分:0)

在花费更多时间查看代码之后,我已经找到了您的问题。首先,您需要从referral_id查询中获取$users

$users = mysql_query("SELECT points, referral_id FROM users WHERE id=".$uid);

然后$query2需要将id与用户的referral_id相匹配,而不是相反。

$query2 = "SELECT id, points, referral_id, level FROM users WHERE id=".$rows['referral_id'];

之后您的UPDATE个查询可能需要一些工作,但这会让您进入if else条件。

OP确定的成功代码

//Updating referral coins
$query2 = "SELECT id, points, referral_id, level FROM users WHERE id=".$rows['referral_id']; $user_rows = mysql_query($query2);
$all=mysql_fetch_array($user_rows,MYSQL_BOTH);
$lvl0 = intval((5/100) * $new);
$lvl1 = intval((10/100) * $new);
$query3 = mysql_query("update users set points = (points + $lvl0) where level = 0 AND referral_id = ".$all['referral_id']);
$query4 = mysql_query("update users set points = (points + $lvl1) where level = 1 AND referral_id = ".$all['referral_id']);

现在我感谢您处于学习阶段,但我想指出一些在将来进行PHP编程时会引起混淆的事情。

首先,正如Option所提到的,您使用的MySQL函数已被弃用。它们不存在于当前稳定版本的PHP中,如果服务器更新,您的代码将不再有效。查看MySQLiPDO作为替代方案。这需要学习很多东西,但是一些谷歌搜索会给你一些指导。

其次是您使用$_REQUEST,它结合了$_GET$_POST$_COOKIE的值,允许访问者轻松操作。可能是您在测试其他代码时仅将其用于用户详细信息,但我只是想确保您了解PHP sessions,这是在登录用户和登录用户之间存储关系的更好方法。他们的持久性变量。