2

オンラインの野球管理ゲームを作成しています。xxampp がローカル PC にインストールされています。これまでに作成したコードは、localhost で好きなように表示されますが、これらのファイルを Web サーバーに転送すると、各行が 2 回表示されます。誰がそれがなぜだろうと思いますか?

<?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タグを閉じてクラスサイトを受け入れます笑だから、おそらくそのWebサーバーはわかりませんか?

4

3 に答える 3

2

クエリに問題があります (ページからスクロールしないように、複数の行に分割しました):

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

ここに私が見るものがあります:

  • にはゼロ以外のものWHERE TeamIDが含まれます。TeamID

  • テーブルplayerを結合teamしていますが、結合条件がありません。つまり、データベースに 2 つのチームがある場合、各プレーヤーは 2 倍になります。データベースに 3 つのチームがある場合、各プレーヤーは 3 倍になります。等々。

ローカル データベースには 1 つのチームがあり、Web サーバーからアクセスするデータベースには 2 つのチームがあると確信しています。クエリは次のようになります。

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

上記の2行目で推測しました。テーブルを結合するために使用される列を置き換えれば、問題ありません。

または、(a)標準であり、(b)結合ロジックが何であるかを明確にするため、ANSI結合を使用してください。このクエリは、上記のクエリとまったく同じです。

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

PHP コードに問題がある場合もありますが、最初にクエリを修正すれば、問題はすぐに見つかります。

最後に、提案: MySQL Workbench または MySQL Command Line を使用して、クエリを PHP コードに入れる前にテストします。時間を大幅に節約できます。

于 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 に答える