2014-10-17 83 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