2012-10-12 102 views
5

可能重複:
How to fetch result from MySQL row with multiple same-name columns with PHP?如何mysql_fetch_array上連接表,但列具有相同的名稱

我有兩個表,他們有着相似的列名。

查詢是:

SELECT a.name,b.name 
FROM tablea a 
JOIN tableb b ON a.id = b.id 

結果放在一個數組:

while ($row = mysql_fetch_array($results)){ 
    $aname = $row['name']; 
} 

一旦我在第二表中加入我注意到$aname使用表B中的數據。

問題(S):我怎麼能同時存儲name列,$row['a.name']不起作用。我的猜測可能是我需要在查詢中爲每個結果添加別名。有什麼建議麼? 我是否應該避免在將來列出名稱?


I know mysql_* is depreciated. Save your energy.

+1

嘿,你知道mysql_ *已被棄用嗎?對不起,無法抗拒。 –

+0

不,我沒有看到任何紅色的盒子,不知道你在說什麼 –

回答

7

你的猜測是正確的。您需要爲列創建一個ALIAS這樣你就可以獲取獨特的它,

SELECT a.name Name1, b.name Name2 
FROM tablea a 
JOIN tableb b ON a.id = b.id 

,那麼你現在可以調用

$row['Name1'] 
+2

我不知道你可以別名,而不使用'AS' –

+0

這就是我認爲...所以沒有辦法使用表格別名呢? –

+1

@Asad'AS'是可選的:D –

6

有一個辦法。

mysql_field_table()會告訴你一個結果集字段的名稱給出$result句柄和序號位置。在與mysql_field_name()結合,這應該是你需要的一切:

// Fetch the table name and then the field name 
$qualified_names = array(); 
for ($i = 0; $i < mysql_num_fields($result); ++$i) { 
    $table = mysql_field_table($result, $i); 
    $field = mysql_field_name($result, $i); 
    array_push($qualified_names, "$table.$field"); 
} 

你可以換到自己的mysql_fetch_qualified_array功能這一點,例如,給你鍵入的"table.field"關聯數組:

function mysql_fetch_qualified_array($result) { 
    ... 
    // caching $qualified_names is left as an exercise for the reader 
    ... 
    if ($row = mysql_fetch_row($result)) { 
    $row = array_combine($qualified_names, $row);  
    } 
    return $row; 
} 
相關問題