我使用以下代码获取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获取查询结果时,它不起作用。
我该如何解决这个问题?
答案 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