表行数据在web上显示两次


table row data displaying twice on web

我正在创建一个在线棒球管理游戏,我有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

  • 您正在连接表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命令行来测试您的查询。你会节省很多时间的。

括号好像太多了。

:

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();