0

5 つのテーブルをクエリしようとしています。テーブルの1つにクエリを実行できます

$query = "SELECT * FROM Stats_player WHERE player='$user'";

ただし、別のテーブルにクエリを実行しようとすると

$query = "SELECT * FROM Stats_player, Stats_block WHERE player='$user'";

ウェブサイトが壊れます。画面にデータをエコーするために使用しているコードは次のとおりです

<?php 
if ($result = $mysqli->query($query)) {
echo "<img src=\"https://minotar.net/avatar/{$user}/100\"><h1>{$user}</h1><br/>";
    while ($row = $result->fetch_assoc()) {
        //variables
        $play_time = $row['playtime']/3600;
        $play_time = round($play_time, 1);
        $xpgained = $row['xpgained'];
        $damagetaken = $row['damagetaken'];
        $toolsbroken = $row['toolsbroken'];
        $itemscrafted = $row['itemscrafted'];
        $itemseaten = $row['omnomnom'];
        $commandsused = $row['commandsdone'];
        $teleports = $row['teleports'];
        $itemspickedup = $row['itempickups'];
        $itemsdroped = $row['itemdrops'];
        $lastseen = date("F j, Y ", strtotime($row['lastjoin']));
        //end of variables
            echo "<p>Time on Server: {$play_time} HRS</p>";
            echo "<p>Last Seen: {$lastseen}";
            echo "<p>Commands Used: {$commandsused}";
            echo "<p>XP Gained: {$xpgained}"; 
            echo "<p>Blocks broken: {$row['blockID']}"; //this is data from the table Stats_block
        }
    $result->free();
} 
$mysqli->close();
?>

これを行う方法についてのアイデアはありますか?

Stats_player のテーブル コンストラクター: | カウンター | プレーヤー | プレイタイム |

Stats_block は: | カウンター | プレーヤー | ブロック ID |

4

3 に答える 3

1
$query = "SELECT * FROM Stats_player, Stats_block WHERE player='$user'"

それは間違っている可能性が非常に高いです。JOIN演算子を使用する必要があります。

ここでは、2 つのテーブルのデカルト積を計算しているだけですが、それはほとんど望んでいません。また、テーブルに多くの行がある場合、リソース (メモリなど) がオーバーランする可能性があります。

何かのようなもの

$query = "SELECT * FROM Stats_player p, Stats_block b 
WHERE p.block_id = b.id AND p.player='$user'"

また

$query = "SELECT * FROM Stats_player p INNER JOIN Stats_block b ON p.block_id = b.id
WHERE p.player='$user'"

または多分LEFT OUTER JOIN ...

正確なクエリは、スキーマによって異なります。

于 2013-05-22T15:01:13.543 に答える
0

次のようなことを試しましたか:

SELECT 
table1.field1, table1.field2, table2.field1, table2.field2
FROM
table1, table2
WHERE 
table1.field1 = " " and table2.field1 = " ";
于 2013-05-22T14:59:26.613 に答える