2013-05-07 44 views
1

我在我的數據庫中有幾個具有相似列名的表。PDO:fetchAll()在JOIN上有重複的列名

讓說表1,表2,表3有一個名爲:「名稱」的列。這些不是索引列。它們包含不同和獨立的數據。

如果我運行一個連接這3個表和fetchAll()結果的查詢,由於fetchAll()會覆蓋具有相同名稱的列,所以在結果數組中只會有一個「名稱」條目。

常規MySQL的圖書館讓你訪問這樣的結果做:

mysql_result($結果,0, 'TABLE1.name');

我怎樣才能讓PDO列名像以前一樣追加表名:TABLE1.name,TABLE2.name等

我想在我的SQL查詢中使用別名,因爲我有噸,以避免表。我在網上找到的唯一答案使用別名。是否有任何參數可以提供給PDO來執行我正在尋找的功能?

+0

據我所知,你將不得不使用'PDO :: FETCH_NUM'和使用的列的FETCH_BOUND'數量,或'和' - > bindColumn()',再次與一些基於指數。 – Wrikken 2013-05-07 19:29:43

+0

Wrikken:關於我如何做到這一點的更多細節? – 2013-05-07 19:35:27

+0

這是在PHP的文檔中,雖然'var_dump()' - > fetchAll(PDO :: FETCH_NUM)'的結果'檢查它的輸出可能會告訴你足夠的工作。 – Wrikken 2013-05-07 20:54:26

回答

1

您可以在SELECT語句中使用別名而不是直接列名。事情是這樣的:

SELECT 
    table1.name AS t1_name, 
    table2.name AS t2_name, 
    table3.name AS t3_name 
-- rest of your query 
+0

請看我上面的問題:「我想避免在我的SQL查詢中使用別名,因爲我有大量的表」-.- – 2013-05-07 19:35:00

+0

對不起,沒有看到:P您可以使用'PDO :: FETCH_NUM',_returns按照[手冊](http://php.net/manual/pt_BR/pdostatement.fetch.php)在結果集中返回的列號索引的數組,從列0_開始。 – vcampitelli 2013-05-07 19:40:11