2012-10-12 11 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 tableb के डेटा का उपयोग कर रहा था।

प्रश्न (ओं): मैं name कॉलम, $row['a.name'] दोनों कैसे स्टोर कर सकता हूं काम नहीं करता है। मेरा अनुमान है कि मुझे क्वेरी में प्रत्येक परिणाम को उपनाम करने की आवश्यकता है। कोई सुझाव? क्या मुझे भविष्य में कॉलम नाम देने से बचाना चाहिए?


I know mysql_* is depreciated. Save your energy.

+1

अरे, क्या आप जानते थे कि mysql_ * को बहिष्कृत किया गया है? क्षमा करें, विरोध नहीं कर सका। –

+0

नहीं, मैंने कोई लाल बक्से नहीं देखा है और आपको नहीं पता कि आप –

उत्तर

7

आपका अनुमान सही था। आप

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' वैकल्पिक है: डी –

6

एक तरीका होता है, तो आप इसे विशिष्ट प्राप्त कर सके स्तंभों के लिए एक ALIAS बनाने की जरूरत,।

mysql_field_table() आपको एक परिणाम सेट फ़ील्ड का नाम बताएगा $result हैंडल और सामान्य स्थिति दिया गया है।

// 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" पर keyed एक साहचर्य सरणी देने के लिए: mysql_field_name() साथ संयोजन के रूप में, कि सब कुछ आप की जरूरत होनी चाहिए

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; 
} 
संबंधित मुद्दे