如何从数组中获取数据

时间:2015-11-01 12:35:58

标签: php arrays oop foreach

您好我已经编写了一个从数据库中获取数据的类,并且在视图中我正在创建该类的实例来获取数据。

当我在视图中使用print_r($emp_data)时,一切似乎都运转良好。它以下列格式返回数据,

Array ( 
        [0] => 1 
        [emp_id] => 1 
        [1] => Aftab 
        [first_name] => Aftab 
        [2] => Kirmani 
        [last_name] => Kirmani 
        [3] => Male 
        [gender] => Male 
        [4] => 1 
        [added_by] => 1 
       )

但是当我使用foreach循环时,它会给我一个错误信息。

  

警告:非法字符串偏移'emp_id'   E:\ xampp \ htdocs \ emp_management \ Views \ view_all_employees.php在线   11

以下是我写的代码。

Class Method

public function get_employees(){
    $query= "select * from employees";
    $query_run= mysqli_query($this->conn, $query);
    if(mysqli_num_rows($query_run) > 0){
        $data= mysqli_fetch_array($query_run);
        return $data;           
    }
}

View

<?php 

include 'header.php';

$employees= new Employees();

$emp_data= $employees->get_employees();

foreach($emp_data as $data){

    echo $data['emp_id'];

}
?>

请指导我在这里做错了什么。我认为array没有以正确的格式返回数据。

由于

1 个答案:

答案 0 :(得分:1)

mysqli_fetch_array返回一行。你的循环(在你称之为&#39; fetch&#39;函数之后)假设你已经检索了所有员工。纠正你的班级功能,如:

public function get_employees(){
    $query = "select * from employees";
    $query_run = mysqli_query($this->conn, $query);
    if(mysqli_num_rows($query_run) > 0){
        $data = array();
        while ($row = mysqli_fetch_array($query_run) {
            $data[] = $row; //this puts all your rows in an array
        }
        return $data;           
    }
}

您可以按原样保留View循环。它应该按预期工作。