0

次のようなSQLクエリがあります。

    public function get_data() {

    $db = new databaseConnection();
    $db->do_connection();

    $this->uid = $_SESSION['uid'];

    $query = "SELECT ut.level, ut.location, ui.quantity, ui.game_item_id
            FROM user_table ut, user_inventory ui
            WHERE ut.user_id = ui.user_id
            AND ut.user_id = :user_id";
    $args = array(
        ":user_id" => $this->uid
    );
    $db->safeQuery($query,$args);

    $results = $db->safe_fetch_all_results();
    if($results == null){
        die ('Error with user data fetch');
    }

    var_dump($results);

    return $results;

}

クエリは私が望むように機能しますが、何らかの理由で var_dump は次のように返されるデータを示しています:

array (size=2)
0 => 
array (size=8)
  'level' => string '1' (length=1)
  0 => string '1' (length=1)
  'location' => string '4554' (length=4)
  1 => string '4554' (length=4)
  'quantity' => string '2' (length=1)
  2 => string '2' (length=1)
  'game_item_id' => string '1' (length=1)
  3 => string '1' (length=1)
1 => 
  array (size=8)
  'level' => string '1' (length=1)
  0 => string '1' (length=1)
  'location' => string '4554' (length=4)
  1 => string '4554' (length=4)
  'quantity' => string '1' (length=1)
  2 => string '1' (length=1)
  'game_item_id' => string '5' (length=1)
  3 => string '5' (length=1)

クエリによって取得される各レコードからわかるように、複製も取得されます。1 つはフィールド名で、もう 1 つは必要に応じてインデックス番号です。

ネストされた foreach ステートメントを実行すると、同じ結果が得られます。重複した結果が得られます。

これが私のテーブルの構造です:

user_table テーブル

user_ID PK
username
password
email
level
location

game_items テーブル

game_item_is PK
item_name

user_inventory テーブル

user_inventory_id PK
user_id FK
game_item_id FK
quantity

なぜこれが起こっているのか、皆さんにはわかりますか?

ありがとう

4

1 に答える 1