作者:bw32dts | 来源:互联网 | 2023-01-29 04:54
我有以下代码连接两个表,然后从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 '
';
}
}
任何帮助非常感谢
附加信息
数据库
教师表
用户表
用户表数据
1> roberto06..:
它似乎不是你的循环只执行一次的问题,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']);