我有以下代码连接两个表,然后从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";
功能
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
由于有超过1名有资格成为教师的用户$teacherInfo
现在应该包含所有这些教师的数据
清空阵列
加载页面时会运行以下操作,并且应显示所有教师.
我的问题
当清空数组时,$allTeachers
我只得到一个结果(老师).因此我的循环只是因某种原因迭代一次
$teachers = new TeacherSearch(); $allTeachers = $teachers->showAllTeachers(); if(is_array($allTeachers)){ foreach($allTeachers as $key => $teacher){ echo $key; echo $teacher; echo '
'; } }
任何帮助非常感谢
附加信息
数据库
教师表
用户表
用户表数据
它似乎不是你的循环只执行一次的问题,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']);
用:
$teacherInfo[] = array('name' =>$teacher['firstname'], 'headline' =>$teacher['headline'], 'location' => $teacher['location'], 'age' => $teacher['age'], 'experience' => $teacher['experience'], 'imgPath' => $teacher['imgPath']);