我正在创建一个在线棒球管理游戏,我有xxampp安装在我的本地pc上,我写的代码到目前为止显示,因为我喜欢它在本地主机上,但是,当我将这些文件传输到web服务器时,它会显示每一行两次有人知道这是为什么吗?
<?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命令而言,这些都不是问题,我想可能是在我真的不确定的时候,因为通常我在其他项目中这样做时没有问题,这是一个更大的项目,虽然它的类型我已经尝试过的第一个这很奇怪,任何建议都会很感激,我注意到的另一件奇怪的事情是在我的这个网站的文件中,我有一个文件,定义了一些元素的web应用程序,在xampp没有问题,在web服务器上,它要求我关闭文件中的打开php标签接受类site lol所以我不知道也许它的web服务器?
你的查询有问题(我把它分成多行,所以它不会滚动出页面):
$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代码可能也有问题,但如果你先修复查询,你很快就会发现它们。
最后,一个建议:在将查询放入PHP代码之前,使用MySQL Workbench或MySQL命令行来测试您的查询。你会节省很多时间的。
括号好像太多了。
:
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>
试试这段代码,看看你看到了什么
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();