2012-01-23 34 views
1

これは、他の領域で問題が発生している可能性がありますが、領域を出力するとm_idの空の結果が返されます。それは複数回使用され、他のすべてのフィールドのデータを正しく表示していますが、使用されているメインフィールドm_idのID番号は表示されません。配列にすべての結果が表示されない

$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の結果を検出しなかった場合、他の2つのテーブルに存在するにもかかわらず、m_idの値は表示されません。とにかくそれを修正するには?

+0

$ enはある時点で定義されていますか? – mowwwalker

+0

@Walkerneoはい、それは定義されています。さて、私は何が起こっているかを見ていると思う。 social_memtextに対してLEFT OUTER JOINを実行すると、そのテーブルがm_idの結果を検出しなかった場合、他の2つのテーブルに存在するにもかかわらず、m_idの値は表示されません。とにかくそれを修正するには? – acctman

+0

@Herbert正解、social_memtextに結果がないときは、空のm_idが表示されています。 _memtextにエントリがあるかどうかにかかわらず、どのようにm_idを表示させることができますか? – acctman

答えて

1

を見上げたときM_IDは常にsocial_membersと_meminfoに値/行があります:http://php.net/manual/en/function.mysql-fetch-assoc.php

結果の2つの以上のカラムが同じフィールド名を持っている場合は、最後の列が優先されます。

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_mid as m_id'をやってしまったので、すべて同じままです。 – acctman

関連する問題