2

我正在创建一个在线棒球管理游戏,我在本地 pc 上安装了 xxampp,到目前为止我编写的代码在 localhost 上显示为我喜欢的,但是当我将这些文件传输到网络服务器时,它显示每一行两次有人知道为什么会这样吗?

<?php
include("./Lib/Database.php");
$db = new Database(false);
$query_string = "SELECT * FROM player, team WHERE TeamID AND PlayerTeamID ='".$_SESSION['TEAMID']."'";

$db->Query($query_string);
$db->SelectNextResult();
while ($row = $db->SelectNextResult()) {
echo("<DIV class='ComponentMain' align='center'>");
echo("<DIV class='ComponentTitle'>Team Name</DIV>");
echo("<BR><TABLE align='center'>");
{
  echo("<TR bgcolor='#DDDDDD'><TD colspan='6'><A HREF='./Player.php?ID=".$db-   >GetResult("PlayerID")."'><DIV class='PlayerName'>".$db->GetResult("PlayerPrenameValue")." ".$db->GetResult("PlayerNameValue")."</DIV></A></TD><TD align='right'><IMG src='./Gfx/Flags/". $db->GetResult("PlayerNationID").".png'/></TD></TR>");
echo("<TR><TD>    Age:</TD><TD>".$db->GetResult("PlayerAge")."</TD><TD>Potential:</TD><TD>".$db->GetResult("Potential")."</TD><TD>Health:</TD><TD>".$db->GetResult("Health")."</TD></TR>");
echo("<TR><TD colspan='5' align='center'><IMG src='./Gfx/Faces/Face.png'/></TD>");
{
    echo("<TR><TD>Contact:</TD><TD>".$db->GetResult("Contact")."</TD><TD>Power:</TD><TD>".$db->GetResult("Power")."</TD><TD>Vision:</TD><TD>".$db->GetResult("Vision")."</TD></TR>");
    echo("<TR><TD>Fielding:</TD><TD>".$db->GetResult("Fielding")."</TD><TD>Intelligence:</TD><TD>".$db->GetResult("Intelligence")."</TD><TD>Speed:</TD><TD>".$db->GetResult("Speed")."</TD></TR>");
    echo("<TR><TD>Morale:</TD><TD>".$db->GetResult("Morale")."</TD><TD>Pitching Skill:</TD><TD>".$db->GetResult("Skills")."</TD><TD>Velocity:</TD><TD>".$db->GetResult("Velocity")."</TD></TR>");
}
echo("<TR><TD colspan='5' align='center'>------------------------------------</TD></TR>");

}
echo("</TABLE>");
echo("<BR></DIV>");
}
$db->Close();
?>

就 $db 命令而言,这些都不是问题,我认为这可能是我真的不确定,通常当我在其他项目上执行此操作时,我没有问题,但这是一个更大的项目,也是第一个此类项目我已经尝试过它只是相当奇怪,任何建议都将不胜感激,我注意到的另一个奇怪的事情是,在我的这个网站的文件中,我有一个文件定义了 webapp 的一些元素,并且在 xampp 上没有问题,在 webserver 上它需要我关闭文件中的开始 php 标记以接受类站点大声笑所以我不知道它可能是网络服务器吗?

4

3 回答 3

2

您的查询存在问题(我已将其拆分为多行,因此它不会滚动到页面外):

$query_string = "SELECT * FROM player, team " .
  "WHERE TeamID AND PlayerTeamID = '" . $_SESSION['TEAMID'] . "'";

这是我看到的:

  • WHERE TeamID包括任何TeamID不为零的。

  • 您正在加入表格playerteam但没有加入条件。这意味着如果你的数据库有两支球队,每个球员都会加倍。如果您的数据库有三支球队,每个球员将增加三倍。等等。

我敢打赌,您的本地数据库有一个团队,而您从 Web 服务器访问的数据库有两个团队。您的查询应该是这样的:

$query_string = "SELECT * FROM player, team " .
  "WHERE team.TeamID = player.PlayerTeamID " .
  "  AND player.PlayerTeamID = '" . $_SESSION['TEAMID'] . "'";

我已经猜到了上面的第二行。替换用于将表格捆绑在一起的列,您会没事的。

或者更好的是,使用 ANSI 连接,因为 (a) 它们是标准的,并且 (b) 它们使您的连接逻辑很清楚。此查询与上面的查询完全相同:

$query_string = "SELECT * FROM player " .
  "INNER JOIN team ON team.TeamID = player.PlayerTeamID " .
  "WHERE player.PlayerTeamID = '" . $_SESSION['TEAMID'] . "'";

您的 PHP 代码也可能存在问题,但如果您先修复查询,您很快就会找到它们。

最后,一个建议:在将查询放入 PHP 代码之前,使用 MySQL Workbench 或 MySQL 命令行来测试您的查询。你会节省很多时间。

于 2013-04-24T04:53:30.877 回答
0

看来你的括号太多了。

地方:

echo("<DIV class='ComponentMain' align='center'>");
echo("<DIV class='ComponentTitle'>Team Name</DIV>");
echo("<BR><TABLE align='center'>");

在 while() 语句之前。逻辑是这样的:

<table>
<tr>
<?php while( $sql = $row ) { ?>
<tr>
   <td><?php echo $row->stuff; ?></td>
   <td><?php echo $row->stuff1; ?></td>>
</tr>
<?php } ?>
</tr>
</table>

希望它有效!

于 2013-04-24T04:39:54.567 回答
0

试试这段代码,你会看到什么

include("./Lib/Database.php");
$db = new Database(false);
$query_string = "SELECT * FROM player, team WHERE TeamID AND PlayerTeamID ='".$_SESSION['TEAMID']."'";
$db->Query($query_string);
while ($row = $db->SelectNextResult()) {
$row->PlayerID; // or $row['PlayerID'];  // or $db->GetResult("Contact")
}
$db->Close();
于 2013-04-24T04:53:17.860 回答