2014-10-17 151 views
0

我有几个表中的关系连接的MySQL。每个人都有自己的唯一ID和数据。试图查询它们只有当我得到一个奇怪的结果:PHP关系密钥错误

(use print_r) 
Array ([0] => Array ([id] => 1 
         [0] => 1 
         [tbl2_id] => 1 
         [1] => 1 
         [tbl3_id] => 1 
         [2] => 1 
         [3] => 1 
         [name] => name1 
         [4] => name1 
         [surname] => ... 
        ) 
     ) 

我不想0等。

只是为了例如,它应该是这样的:

(use print_r) 
Array ([0] => Array ([id] => 1 
         [tbl1_id] => 1 
         [tbl2_id] => 1 
         [tbl2_tbl1id] => 1 
         [tbl3_id] => 1 
         [tbl2_tbl1id] => 1 ... 
        ) 
     ) 

或类似的东西。我使用的PDO,当它调用SQL看起来是这样的:

SELECT * 
FROM `tbl` 
    INNER JOIN (tbl2, tbll) 
    ON tbl.tbl1_id=tbl1.id 
     AND tbl.tbl2_id=tbl2.id 
WHERE 1 

在MySQL中使用后得到这样的效果在画面(运行SQL查询/查询上databas)

http://i.stack.imgur.com/FSCs0.png

+0

一些少量更改数据库,但主要是饲料,而不是ID提供意见写$行[“tbl1.id”]或$行[“tbl2.id”],而不是在mysql中显示了我两次“id”和print_r显示为[0]或[1]等等 – ubgsdnhfj 2014-10-17 20:08:44

+0

您能否提供代码以显示如何查询和获取结果? – FlipMcF 2014-10-17 20:13:02

回答

1

这看起来像您正在使用PDoCtatement :: fetch()并将fetch_style设置为PDO :: FETCH_BOTH - 这是默认设置。

http://php.net/manual/en/pdostatement.fetch.php

使用PDO :: FETCH_ASSOC为fetch_style,你应该得到你所期待的。

$result = $sth->fetch(PDO::FETCH_ASSOC); 
print_r($result); 
+0

现在的作品,但不是我想要的,问题是我的意思是牙齿剩下两个版本的“ID”或其他表,如“名称”,只是为了使他们被歧视,因为我有一个用户表,其中你是“名称”,我有一张桌子tbl1,在这张桌子里你也是“名字”,通过这个对我来说消失了。唯一的解决方案是更改表的名称? – ubgsdnhfj 2014-10-17 20:32:29

+0

然后不要'SELECT *' - 只选择你需要的字段。你也可以别名表 - 'SELECT tb1.name FROM ...' – FlipMcF 2014-10-17 20:35:53

+0

Upvote answer if it works“你的评论是一个单独的问题。 – FlipMcF 2014-10-17 20:39:16