0

在您假设我没有建立数据库连接之前,我做到了。唯一不更新的代码部分是 if empty 语句。

所有值都可以正确回显,只是查询不起作用。

这是在目录配置中并命名为 stuff.php

 $user = $mysqli->real_escape_string($_SESSION['username']);
 $user_query = "SELECT * FROM users WHERE username = '$user'";
 $result = $mysqli->query($user_query);
 $row = $result->fetch_assoc();
 $referrer = $row['ref'];
 $refearn = $row['refearn'];

验证.php

include('config/stuff.php');
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {  // Get Real IP              
    $IP = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} else { 
    $IP = $_SERVER['REMOTE_ADDR'];
}

if ($IP=="external server ip here") {
        if (!empty($referrer)){
            $mysqli->query("UPDATE users SET points=points+10, refearn = refearn+10 WHERE username='".$referrer."'") or die(mysqli_error($mysqli)); 
        }
        $mysqli->query("UPDATE users SET points=points+".$earnings.", completed = completed+1 WHERE username='".$subid."'") or die(mysqli_error($mysqli));
}       
4

2 回答 2

1

我的猜测是您可以尝试通过查询检索点的值,然后添加到它,这样您就可以更新为一个简单的值。但是,如果 mysql_error() 返回错误,则应该更容易弄清楚。

例子:

$getPoints = mysql_query("SELECT points FROM table WHERE condition");
$points = mysql_result($getPoints, 0, "points");

$update = mysql_query("UPDATE table SET points=" . ($points+10) . " WHERE condition");

希望有帮助。不过,另一个考虑因素。为什么要使用 endif 结构,除非您要破坏 PHP 标记来显示内容?

于 2012-11-12T05:23:07.607 回答
0

尝试这个:

$mysqli->query("UPDATE `users` SET `points`=`points`+10, `refearn` = `refearn`+10 WHERE `username`='".$referrer."'") or die(mysqli_error($mysqli)); 

希望这可以帮助。我认为,mysql 查询可能会将它们视为常量 - 而不是 mysql 行。试试看

于 2012-11-12T05:24:42.560 回答