2013-02-15 3 views
0

У меня есть этот скрипт как задание cron, которое запускается каждые 5 минут, проблема в том, что он не увеличит энергетический уровень, как я полагаю. Если кто-нибудь скажет мне, что я делаю неправильно, это было бы здорово. Помните, что это не возвращает никаких ошибок, просто не работает, также информация о подключении базы данных правильна, просто оставлена ​​без записи.Получить значение и приращение на единицу для каждого пользователя

{ 

    $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 
} 
+0

Вы знаете, что вы можете сделать это в одной команде SQL вместо этого? – Popnoodles

+0

Повесить, что такое 'Max' в' energy - Max'? – Popnoodles

+0

@njk вам не нужно публиковать это на каждом посту, в котором упоминается sql! Как помочь в ответе на вопрос? – Popnoodles

ответ

3

Вы можете решить все в одном операторе

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

Таким образом, вы имеете один вместо 3 * число-членов запросов

+0

+1 для обратных ссылок. – Kermit

+0

Большое спасибо за быстрый ответ всем. Очень полезно – Walt

+0

@king, как я могу заставить это работать, если я хочу, чтобы он обновлялся, когда значение равно определенному числу? Я попытался запросить базу данных и выполнить оператор If, но он не обновляется. – Walt

0

mysql_query не возвращает значения, только так -called запрос 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; 
+1

Я не совсем уверен, но я боюсь, что «энергия-Макс» - это имя столбца: X – KingCrunch

+0

@KingCrunch хорошая точка, я обновил свой ответ – PiotrK

+1

Пожалуйста, не используйте функции 'mysql_'. – Kermit

0

Вы забыли WHERE id = $id в отчете обновления.

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

Но ответ KingCrunch является лучше ..

Смежные вопросы