0

私はこのスクリプトを 5 分ごとに実行するように設定された cron ジョブとして持っています。ここで私が間違っていることを誰かに教えてもらえれば、それは素晴らしいことです。これはエラーを返さず、機能しません。また、データベース接続情報はすべて正しく、投稿から除外されていることを忘れないでください。

{

    $energy = mysql_query("SELECT energy FROM members WHERE  id=$id");
    //get current users energy level
    $energy_max = mysql_query("SELECT energy-Max FROM members WHERE  id=$id");
    //get current users Maximum energy level

        if ($energy < $energy_max)
        // do -if current energy level is less than maximum
            {
                $energy = $energy ++;
                //increment energy by 1
                mysql_query("UPDATE members SET energy= $energy");
                //set the new energy level
            }
                $id++;
                //increment to the next user
}
4

3 に答える 3

3

1 つのステートメント内ですべてを解決できます

UPDATE `members` SET `energy` = `energy` + 1 WHERE `energy-Max` > `energy`;

この方法では、3 * number-of-members クエリではなく 1 つになります。

于 2013-02-15T00:29:06.280 に答える
0

mysql_query値は返さず、いわゆるクエリ idのみを返します。実際のデータを取得する必要があります。

$query = mysql_query("SELECT energy FROM members WHERE  id=$id");
$val = mysql_fetch_assoc($query); // Now the data is in $val['energy']

もちろん、これを介してこれをより迅速に行うことができます(他の回答で指摘されているように):

UPDATE members SET energy = energy + 1 WHERE energy < energy-Max;
于 2013-02-15T00:30:28.167 に答える
0

id = $idupdate ステートメントの WHERE を忘れました。

 mysql_query("UPDATE members SET energy= $energy WHERE id = $id");

しかし、KingCrunch の回答の方が優れています。

于 2013-02-15T00:30:55.507 に答える