1

データベースからデータを取得してforeachするのに問題があります。

これが私がデータを取得する方法です:

    $results = $db->get_results('SELECT *
    FROM `'.$db->base_prefix.'users` 
    LEFT JOIN `'.$db->base_prefix.'usermeta` ON '.$db->base_prefix.'users.id = '.$db->base_prefix.'usermeta.user_id 
    AND '.$db->base_prefix.'usermeta.meta_key=\''.'cpoints'.'\''.$extraquery.' 
    ORDER BY '.$db->base_prefix.'usermeta.meta_value+0 DESC'
    . $limit . ';'
    ,ARRAY_A);

配列を印刷すると、次のようになります。

(
[0] => Array
(
[ID] => 4
[user_login] => member3
[user_name] => member3
[user_email] => member3@member.com
)

これまでのところすべてが素晴らしいですが、データを使用したいときに空の結果が得られる場合、これがforeachの使用方法です。

foreach($results as $result){
    $user =  $result[0]['ID'];          
    $username = $result[0]['user_login'];
    $user_nickname = $result[0]['display_name'];
    $gravatar = get_avatar( $result[0]['ID'] , $size = '32' );

この後、値(たとえば$ user)をテーブルにエコーすると、空になります。

4

1 に答える 1

3

[0]すべての参照から削除し$resultます。それはすでにによって処理されforeachます:

foreach($results as $result){
   $user =  $result['ID'];          
   $username = $result['user_login'];
   $user_nickname = $result['display_name']; //shouldn't this be user_name?
   $gravatar = get_avatar( $result['ID'] , $size = '32' );
   //...
}

また、print_r結果としてそのようなフィールドはありませんdisplay_name

于 2012-06-10T20:13:10.993 に答える