如何使用PHP作为可用变量获取mysql列的总和

时间:2011-07-10 13:54:39

标签: php mysql

我一直在寻找一周如何实现这一目标,但没有一个教程有效 - 我通常会收到一条消息“资源ID 18。”

我正在创建银行模拟游戏。

结束目标:我希望变量“$ player_balance”是该玩家拥有的所有帐户余额的总和,以便它可以显示在帐户余额下的表格底部。

这是我的代码,感谢您提供的任何帮助或指导。

function displayMyAccounts(){
   global $database, $session;
   $q = "SELECT game_account_number,game_account_owner,game_account_name,game_account_balance FROM ".TBL_ACCOUNTS." WHERE game_account_owner='".$session->username."'";
   $result = $database->query($q);
   /* Error occurred, return given name by default */
   $num_rows = mysql_numrows($result);
   if(!$result || ($num_rows < 0)){
      echo "Error displaying info";
      return;
   }
   if($num_rows == 0){
      echo "Database table empty";
      return;
   }

   /* Display table contents */
   echo "<table align=\"left\" border=\"1\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%\">\n";
   echo "<tr><td><b>Account Number</b></td><td><b>Account Name</b></td><td><b>Balance</b></td></tr>\n";
   for($i=0; $i<$num_rows; $i++){
      $anumber  = mysql_result($result,$i,"game_account_number");
      $aowner = mysql_result($result,$i,"game_account_owner");
      $aname  = mysql_result($result,$i,"game_account_name");
      $abalance   = mysql_result($result,$i,"game_account_balance");
      setlocale(LC_MONETARY, 'en_US');
      $abalance2 = money_format('%(#10n', $abalance);

      echo "<tr><td>$anumber</td><td>$aname</td><td>$abalance2</td></tr>\n";
   }
       echo "<tr><td></td><td></td><td>$player_balance</td></tr>\n";
   echo "</table><br>\n";
}
displayMyAccounts();

以上代码显示在每个玩家的“帐户页面”上。我希望他们的帐户总和显示在最后一行。感谢您的帮助,我会在此期间继续搜索和尝试。

以下是基于以上内容的输出:

    Account Number  Account Name    Balance
    1000083690  Maverick    $ 50,000.00
    1000083696  WellsFargo  $ 50,000.00
    1000083697  Wachovia    $ 50,000.00

2 个答案:

答案 0 :(得分:0)

请勿使用mysql_result()。这是缓慢而低效的,而你正在做的事情最好用mysql_fetch_assoc()完成:

$player_balance = 0;
// Also, ditch the for loop. This is the typical convention for retrieving results.
while ($row = mysql_fetch_assoc($result)) {

  $abalance1 = money_format('%(#10n', $row['game_account_balance']);
  echo  "<tr><td>{$row['game_account_number']}</td><td>{$row['game_account_name']}</td><td>$abalance1</td></tr>\n";

  // Now add to the balance
  $player_balance = $player_balance + $row['game_account_balance'];
}
// And output your balance
$abalance_sum = money_format('%(#10n', $player_balance);
echo "<tr><td></td><td></td><td>$abalance_sum</td></tr>\n";

答案 1 :(得分:-1)

资源错误意味着  你没有桌子或许可,或者你试图进入一个不存在的栏目