2012-01-23 166 views
1

這可能是我在其他區域遇到問題的原因,但輸出該區域的結果爲m_id。它使用了多次的字段並正確顯示所有其他字段的數據,但使用的主字段m_id未顯示其ID號。Array not displayed all results

$res = mysql_query("SELECT *, DATE_FORMAT(sm.m_lld,'%m/%d/%y') 
        AS m_lld_formatted 
        FROM social_members sm 
        JOIN social_meminfo smi ON (sm.m_id = smi.m_id) 
        LEFT OUTER JOIN social_memtext smt ON (sm.m_id = smt.m_id) 
        WHERE sm.m_user = '".mysql_real_escape_string($en['user'])."'");    
if (mysql_num_rows($res) == 0) call404(); 
$line = mysql_fetch_assoc($res); 
foreach ($line as $key => $value) { 
     $en['m'.$key] = str_replace("\n",'<br/>',stripslashes($value)); 
     } 

echo '<pre>'; print_r($line); echo '</pre>'; 
echo $en['mm_id']; 

好吧我想我明白髮生了什麼事。當我爲social_memtext執行LEFT OUTER JOIN時,如果該表找不到m_id的結果,即使它存在於另外兩個表中,它也不會顯示m_id的值。無論如何解決這個問題? M_ID將永遠在social_members值/行和_meminfo時擡頭

+0

$ en被定義在某個點嗎? – mowwwalker

+0

@Walkerneo是的定義。好吧,我想我知道發生了什麼。當我爲social_memtext執行LEFT OUTER JOIN時,如果該表找不到m_id的結果,即使它存在於另外兩個表中,它也不會顯示m_id的值。無論如何解決這個問題? – acctman

+0

@赫伯特正確,我注意到,當social_memtext沒有任何結果時顯示空的m_id。無論_memtext是否有條目,我怎樣才能讓它顯示m_id? – acctman

回答

1

來源:http://php.net/manual/en/function.mysql-fetch-assoc.php

如果結果的兩列或多列具有相同字段名,最後一列將優先。

您正在從3個連接中選擇所有連接,並且在每個表格中m_id具有相同的名稱。 這意味着結果集中有3 m_id,最後一個來自左連接的表social_memtext,如果該表中沒有對應給定的m_id行,則該值爲NULL。

爲了讓你的預期m_id在SELECT中添加一個別名,並在php中爲數組索引使用該別名。

SELECT *, DATE_FORMAT(sm.m_lld,'%m/%d/%y') 
       AS m_lld_formatted, 
      sm.m_id as mem_id 
... 
+0

謝謝,我最終做了'sm.m_id m_id'這樣一切都保持不變。 – acctman