我是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中出现了错误
答案 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中,如果服务器更新,您的代码将不再有效。查看MySQLi或PDO作为替代方案。这需要学习很多东西,但是一些谷歌搜索会给你一些指导。
其次是您使用$_REQUEST
,它结合了$_GET
,$_POST
和$_COOKIE
的值,允许访问者轻松操作。可能是您在测试其他代码时仅将其用于用户详细信息,但我只是想确保您了解PHP sessions,这是在登录用户和登录用户之间存储关系的更好方法。他们的持久性变量。