我有一个看起来像这样的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)


如您所见,对于查询正在检索的每条记录,还将检索重复的记录,如果需要,可以检索一个具有字段名称的记录,另一个具有索引号。

当我执行嵌套的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


你们会知道为什么会这样吗?

谢谢

最佳答案

这是标准行为...
如果从结果集中获取数据,则可以选择按关联(FETCH_ASSOC),按索引或两者(FETCH_BOTH)进行检索。

关于mysql - sql查询返回所需数据量的两倍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15922263/

10-13 02:03
查看更多