0

データベース接続を確立していないと思い込む前に、確立しました。更新されないコードの唯一の部分は、if empty ステートメントです。

すべての値は正しくエコーアウトできますが、クエリが機能しないだけです。

これはディレクトリ config にあり、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'];

verify.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");

それが役立つことを願っています。ただし、別の考慮事項。コンテンツを表示するために PHP タグを壊さない限り、なぜ endif 構造を使用するのでしょうか?

于 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 に答える