2016-05-18 4 views
0

Я не знаю почему, но эта mysql_query просто работает несколько раз. я не знаю, почему все еще потому работает отлично это один здесь:Эта mysql_query как раз работает несколько раз

mysql_query("UPDATE users SET `profit`=profit+$profit, `won`=won+$jackpotcost, `gameswon`=gameswon+1, `games`=games+1 WHERE `steamid`='$winnerid'") or die(mysql_error()); 

Но это одна не работает:

while($row = mysql_fetch_array($rs)) 
{ 
    if($row["userid"] == $winnerid) 
    { 
     $time=time(); 
     $time=$time+10; 
     mysql_query("UPDATE users SET `profit`=profit+$profit, `won`=won+$jackpotcost, `gameswon`=gameswon+1, `games`=games+1 WHERE `steamid`='$winnerid'") or die(mysql_error()); 
     mysql_query("INSERT INTO `messages` (`type`,`app`,`userid`,`title`,`msg`,`time`,`active`,`delay`) VALUES ('success','0','$winnerid','Congratulations!','You won $$jackpotcost in Game #$cg with a $wonpercent% chance!','10',1,$time)"); 
    } 
    else 
    { 
     $loserid = $row["userid"]; 
     $rs = mysql_query("SELECT * FROM ".$p2t."game".$cg." WHERE `userid`=".$loserid.""); 
     $losercost=0; 
     while($lrow = mysql_fetch_array($rs)) 
     { 
      $losercost+=$lrow['value']; 

     } 
     $time=time(); 
     $time=$time+10; 
     mysql_query("UPDATE users SET `profit`=profit-$losercost, `games`=games+1 WHERE `steamid`='$loserid'") or die(mysql_error()); 
     mysql_query("INSERT INTO `messages` (`type`,`app`,`userid`,`title`,`msg`,`time`,`active`,`delay`) VALUES ('error','0','$loserid','GL Next Game!','$winnername won $$jackpotcost in Game #$cg with a $wonpercent% chance!','10',1,$time)"); 

    } 
} 

Если кто-то может мне помочь и объяснить, что случилось с ним

+2

Итак, какой именно запрос вызывает проблему? ** Боковое примечание: ** mysql_ * функции устарели, поэтому вы должны использовать функции mysqli_ * или PDO. –

+2

Если вы обновляетесь до текущей версии PHP, это не сработает. Эти функции 'mysql_ *' устарели в течение 5 лет, и теперь они полностью исчезли. Альтернативы, такие как PDO, доступны уже более 10 лет, вы должны работать с этим. – miken32

+0

@ miken32 Я не думаю, что первый запрос является частью одного и того же скрипта. Это то, что он сказал, работает нормально. – Barmar

ответ

3

Вы переписываете переменную $rs во внутренний цикл. Измените имя, и все должно быть хорошо.

0

Если вы работаете, иногда я подозреваю, что вы не используете mysql_real_escape_string($variable).

Вы хотите сделать:

$variable = ""; // content goes here 

// then for readying the input 
mysql_real_escape($variable); 
$query = ""; // your query goes here. 
mysql_query($query); 

Что это делать?


mysql_real_escape_string() Собирается экранировать кавычки, которые вводятся в переменной или пользовательского ввода. Он подготовит вашу переменную/ввод для запросов.

ПРИМЕЧАНИЕ: Вы можете перейти к MySQLi (AKA: MySQL improved) или перейти к PDO. Это значительно улучшит ваш код с проблемами безопасности.

Hoped это помогло.

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