我正在创建一个在线棒球管理游戏,我在我的本地电脑上安装了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没有问题,在网络服务器上它要求我关闭文件中的开放php标签接受类网站大声笑所以我不知道也许它是网络服务器?
答案 0 :(得分:2)
您的查询中存在问题(我已将其拆分为多行,因此不会滚动页面):
$query_string = "SELECT * FROM player, team " .
"WHERE TeamID AND PlayerTeamID = '" . $_SESSION['TEAMID'] . "'";
这就是我所看到的:
WHERE TeamID
将包含任何非零的TeamID
。
您正在加入表格player
和team
,但您没有加入条件。这意味着如果您的数据库有两个团队,每个玩家将加倍。如果您的数据库有三个团队,则每个玩家将增加三倍。等等。
我愿意打赌您的本地数据库有一个团队,而您从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代码也可能存在问题,但如果您先修复查询,您很快就会找到它们。
最后,建议:使用MySQL Workbench或MySQL命令行测试您的查询,然后再将它们放入PHP代码中。你会节省很多时间。
答案 1 :(得分: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>
希望它有用!
答案 2 :(得分: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();