PHP/MYSQL循环只迭代一次,无法将数据存储在数组中

Tim*_*zee 1 php mysql sql arrays

我有以下代码连接两个表,然后从users表中返回所有教师的用户.

然后,从teachers表中检索有资格成为教师的用户的信息

因此,假设有3个用户符合users表格中的教师资格,那么所有有信息的用户都应该存储在一个数组中.

页面加载时,数组会清空

SQL语句

//IF my reasoning is correct the folllowing sql query should select alll users who qualifies as teachers
$sql = "SELECT users.*, teachers.*
        FROM users INNER JOIN teachers ON teachers.userID = users.userID";
Run Code Online (Sandbox Code Playgroud)

功能

public function showAllTeachers()
    {
        $db = DB::getInstance();
        $sql = "SELECT users.*, teachers.*
        FROM users INNER JOIN teachers ON teachers.userID = users.userID";

        //simple DB QUERY
        $stmnt = $db->prepare($sql);
        $stmnt->execute();
        $teachers = $stmnt->fetchAll();
        $teacherInfo = array();

        //Check if there are any users who qualifies as teachers else return fals
        if ($stmnt->rowCount() > 0) {
            foreach($teachers as $teacher){
          //Store all teacher info in array $teacherInfo
          //There are more than 1 teacher so loop shouldl iterate more than once

                $teacherInfo = array('name' =>$teacher['firstname'], 'headline' =>$teacher['headline'], 'location' => $teacher['location'],
                    'age' => $teacher['age'], 'experience' => $teacher['experience'], 'imgPath' => $teacher['imgPath']);
            }//foreach

            //return array with teacher info
            return $teacherInfo;
        }//rowcount
        else {
            return false; //no teachers
                }
    }//function
Run Code Online (Sandbox Code Playgroud)

由于有超过1名有资格成为教师的用户$teacherInfo现在应该包含所有这些教师的数据

清空阵列

加载页面时会运行以下操作,并且应显示所有教师.

我的问题 当清空数组时,$allTeachers我只得到一个结果(老师).因此我的循环只是因某种原因迭代一次

 $teachers = new TeacherSearch();
           $allTeachers = $teachers->showAllTeachers();
            if(is_array($allTeachers)){
                foreach($allTeachers as $key => $teacher){
                    echo $key;
                    echo $teacher;
                    echo '<br />';
                }
              }
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢

附加信息

数据库

在此输入图像描述

教师表

在此输入图像描述

用户表

在此输入图像描述

用户表数据

在此输入图像描述

rob*_*o06 6

它似乎不是你的循环只执行一次的问题,echo 'test'在其中添加,你会看到它被执行多次(当然,只要$teachers有多个元素).

问题是你要覆盖$teacherInfo每个foreach循环执行,而不是向它添加一个新数组.

替换:

$teacherInfo = array('name' =>$teacher['firstname'], 'headline' =>$teacher['headline'], 'location' => $teacher['location'],
    'age' => $teacher['age'], 'experience' => $teacher['experience'], 'imgPath' => $teacher['imgPath']);
Run Code Online (Sandbox Code Playgroud)

用:

$teacherInfo[] = array('name' =>$teacher['firstname'], 'headline' =>$teacher['headline'], 'location' => $teacher['location'],
    'age' => $teacher['age'], 'experience' => $teacher['experience'], 'imgPath' => $teacher['imgPath']);
Run Code Online (Sandbox Code Playgroud)