Php Codeigniter将数组从控制器传递到模型,但不返回匹配结果

Php Codeigniter将数组从控制器传递到模型,但不返回匹配结果,php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在尝试将一组数据从控制器发送到模型。但当我在控制器上打印时,我没有得到相应“已用id”的匹配“员工代码” 我的控制器 Controller: $get_userid = $this->report->get_users_from_manager_id($this->session_user_id); $data["permit_user_id"] = $get_userid; foreach($get_userid as $user){ $

我正在尝试将一组数据从控制器发送到模型。但当我在控制器上打印时,我没有得到相应“已用id”的匹配“员工代码”

我的控制器

Controller:

    $get_userid = $this->report->get_users_from_manager_id($this->session_user_id);
    $data["permit_user_id"] = $get_userid;
    foreach($get_userid as $user){
    $data["get_employee_code"] = $this->report->get_user_employee_code($user['user_id']);
    }
我的模型:

Model:

 /**Get User_id From the Manager id */
public function get_users_from_manager_id($manager_d){
    // $output = array();
    $sql = 'SELECT * FROM manager WHERE manager_id = "'.$manager_d.'"';
    $query = $this->db->query($sql);

    if ($query->num_rows() > 0) {
        $data = $query->result_array();
    }
    return $data;
}
 public function get_user_employee_code($user_id)
{
    $sql = 'SELECT * FROM user WHERE user_id = "'.$user_id.'"';
    $query = $this->db->query($sql);

    if ($query->num_rows() > 0) {
        $data = $query->result_array();
    }
    return $data;
}
我的看法:

Views:

foreach($permit_user_id as $user){
    foreach($get_employee_code as $employee_code){
        print_r("User_id:".$user['user_id']."  Employee_code:".$employee_code['employee_code']."<br>");
    }
}
表用户:

  id    user_id     employee_code
  1     10001       500001
  2     10002       500002
  3     10003       500003
  4     10004       500004
  5     10005       500005
  6     10006       500006
输出我得到的

 User_id: 10001 Employee_code: 500006
 User_id: 10002 Employee_code: 500006
 User_id: 10003 Employee_code: 500006
 User_id: 10004 Employee_code: 500006
 User_id: 10005 Employee_code: 500006
 User_id: 10006 Employee_code: 500006
输出我需要的内容:

 User_id: 10001 Employee_code: 500001
 User_id: 10002 Employee_code: 500002
 User_id: 10003 Employee_code: 500003
 User_id: 10004 Employee_code: 500004
 User_id: 10005 Employee_code: 500005
 User_id: 10006 Employee_code: 500006

提前感谢

这是您弄错的地方:

foreach($get\u userid作为$user){
$data[“get_employee_code”]=$this->report->get_user_employee_code($user['user_id');
}
在这里,您将在每次迭代中覆盖
$data[“get\u employee\u code”]
。最后,这个数组中剩下的就是最后一个值“500006”。你可能想做的是:

$data["get_employee_code"][] = // <- note the extra brackets
您应该做的是编写一个查询来获取模型中所需的所有数据,而不是所有这些:

public函数从\u经理\u id($manager\u id)获取\u用户\u和\u员工\u id\u{
$sql='在user.user\u id=manager.user\u id其中manager.manager\u id=“”.$manager\u id.”上从用户加入管理器中选择user.user\u id、user.employee\u id;
$query=$this->db->query($sql);
如果($query->num\u rows()>0){
$data=$query->result_array();
}
返回$data;
}
现在,这个
$data
是一个数组,它包含带有成对用户和员工ID的行,您可以将这些行传递到视图中,只需使用单个
foreach
即可输出


另外,我不知道在后台数据库查询使用了什么,但是找到了一种方法来参数化查询。直接将参数插入这样的查询中。

尝试在单个查询中实现这一点可以减少不必要的循环和数据库调用

SELECT 
  a.`manager_id`,
  a.`user_id`,
  b.`employee_code` 
FROM
  `manager` AS a 
  INNER JOIN `user` AS b 
    ON a.`user_id` = b.`user_id`
ORDER BY a.`manager_id` ASC,
  a.`id` ASC ;
一旦到达要查看的数据

你可以用

  • 为manager\u id声明数组
  • 循环结果
  • 您可以通过签入数组调用来区分管理器id

Plz是否可以包含表格数据?@T.Maharani请检查我是否包含表格数据。请删除查询中变量$user\u id和$manager\u id之前的单引号$sql=“从manager中选择*,其中manager\u id=”.$manager\u id@T.Maharani,这将导致插入文本
$user\u id.
而不是变量值。@T.Maharani您能用任何示例解释我吗
 User_id: 10001 Employee_code: 500001
 User_id: 10001 Employee_code: 500002
 User_id: 10001 Employee_code: 500003
 User_id: 10001 Employee_code: 500004
 User_id: 10001 Employee_code: 500005
 User_id: 10001 Employee_code: 500006

 User_id: 10002 Employee_code: 500001
 User_id: 10002 Employee_code: 500002
 User_id: 10002 Employee_code: 500003
 User_id: 10002 Employee_code: 500004
 User_id: 10002 Employee_code: 500005
 User_id: 10002 Employee_code: 500006

 ... and so on ...
SELECT 
  a.`manager_id`,
  a.`user_id`,
  b.`employee_code` 
FROM
  `manager` AS a 
  INNER JOIN `user` AS b 
    ON a.`user_id` = b.`user_id`
ORDER BY a.`manager_id` ASC,
  a.`id` ASC ;