使用数组中的foreach从数据库获取数据

时间:2012-06-10 20:10:06

标签: php mysql database arrays 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)回显到表中,它变为空。

1 个答案:

答案 0 :(得分: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