2012-01-23 122 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