php函数没有循环遍历所有用户,只是第一个用户

问题描述:

下面的php函数只能用于一个用户记录,并不是所有的用户记录在weekly_email_f1列中的值为“1”,任何想法?php函数没有循环遍历所有用户,只是第一个用户

function getSummaryEmailInfo() { 
    $sql = " 
     SELECT u.id, u.master_id, u.email 
     FROM user AS u 
     WHERE u.weekly_email_fl = 1 
    "; 
    $query = $this->db->query($sql); 
    $users = $query->result_array(); 

    foreach ($users as &$user) { 
     $user_id = ($user['master_id'] == '0') ? $user['id'] : $user['master_id']; 

     $sql = " 
     SELECT ui.custom_name 
     FROM user_item AS ui 
     WHERE ui.user_id = '" . $user_id . "' 
     AND added_to_list_dt IS NOT NULL 
     ORDER BY added_to_list_dt DESC 
     ; 
     "; 
     $query = $this->db->query($sql); 
     $user['s_list'] = $query->result_array(); 
    } 
    return $users; 
    } 

有多个用户与weekly_email_f1 = 1,我觉得有什么不对与result_array()如何;被填充,但无法弄清楚,可是...

function getUserInfo($user_id) { 
    $query = $this->db->query(" 
     SELECT name AS first_name, email, zip_code, weekly_email_fl 
     FROM user 
     WHERE id = '" . $user_id . "' 
    ;"); 
    if ($query->num_rows() > 0) { 
     $results = $query->result_array(); 
     $results = $results[0]; 
    } else { 
     $results = null; 
    } 
    return $results; 
    } 
+3

有你测试的功能,无需在foreach循环来检查问题是否是内部或外部的循环? – 2012-08-12 17:53:14

  1. 只有1 weekly_email_f1用户= 1
  2. $查询 - > result_array();仅返回第一/最后/一行。
+0

谢谢,增加了一些更多的细节...多个用户有weekly_email_f1 = 1。感谢布拉克 – user1263003 2012-08-12 23:09:49

while($users = $query->result_array()) { 
    /* You can use $users['master_id'] here */ 
} 
+0

。那么,所有当前的“foreach”代码应该位于括号之间? {} – user1263003 2012-08-13 02:17:44

+0

对不起,您必须删除foreach,而$ users ['master_id']将正常工作。 – 2012-08-13 10:03:11