将mysql_query结果传递给foreach

时间:2014-01-26 16:55:20

标签: php mysql sql codeigniter loops

我使用以下代码获取Facebook好友的用户列表,并在app数据库中对用户进行ccheck。此代码将返回应用的用户,他们是用户的Facebook好友。

     $friends_set = '(';
             foreach($friends["data"] as $value) {
                 $friends_set .= $value['id'].','; 
             }
             $new_set = preg_replace('/,$/',')',$friends_set);
               $res = mysql_query("SELECT * from user AS u, upload AS up WHERE u.fb_id IN $new_set AND u.fb_id=up.user_id") or die(mysql_error());

    while($row = mysql_fetch_array($res)) {

        echo $row['fb_id']. "". $row['first_name'];
        echo "<br>"; 

      }

$data['top_friends']=$res;
$this->load->view('myview');

此代码有效。它位于我的codeigniter应用程序的控制器中,并成功地将正确的数据回显到页面上。

但是现在我需要在我的视图中为每个语句打印查询结果,如下所示:

<?php foreach ($top_friends as $me) : ?>

                    <div >

                    <p><?php echo $me['first_name']; ?></p>

                     <?php endforeach; ?>

但是,当我尝试使用for each获取查询结果时,它不起作用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用codeignitor方式,创建模型函数说get_top_friends并假设您将逗号分隔的字符串作为参数传递,如$ fb_id = '45,65,78,89'。假设facebook_model是模型的名称:

class Facebook_model extends CI_Model{
     //other functions and constrcutor here

    //function to get the top friends
     function get_top_friends($fb_id){
       $fbId = explode(",",$fb_id)
       $this->db->select('*');
       $this->db->where_in('fb_id',$fbId);
       $this->db->order_by('points','desc');
       $this->db->limit(10);
       $query = $this->db->get('user');
       if ($query->num_rows() < 1) return FALSE;
       return $query->result_array();
     }
}

并在代码中进行更改,如下所示:

 $friends_set = '';
     foreach($friends["data"] as $value) {
         $friends_set .= $value['id'].','; 
     }
     $new_set = preg_replace('/,$/',')',$friends_set);
     $res = $this->facebook_model->get_top_friends($new_set);
     $data['top_friends']=$res;
     $this->load->view('myview',$data);

现在您可以尝试

foreach ($top_friends as $me){
  echo $me['first_name'];
}

[为用户更新]

如果您想在问题中执行此操作:请尝试

$result = array();
while($row = mysql_fetch_array($res)) {
        $result[] = $row;  
}
$data['top_friends']=$result;
$this->load->view('myview',$data);//pass data to view