PHP/MYSQL循环只迭代一次,无法在数组中存储数据
我有下面的一段代码,它连接两个表,然后返回PHP/MYSQL循环只迭代一次,无法在数组中存储数据,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,我有下面的一段代码,它连接两个表,然后返回users表中所有作为教师的用户 对于有资格成为教师的用户,将从教师表中检索信息 因此,假设有3个用户符合users表中的教师资格,那么所有3个具有这些信息的用户都应该存储在一个数组中 当页面加载时,数组变空 SQL语句 //IF my reasoning is correct the folllowing sql query should select alll users who qualifies as teachers $sql = "SELEC
users
表中所有作为教师的用户
对于有资格成为教师的用户,将从教师
表中检索信息
因此,假设有3个用户符合users
表中的教师资格,那么所有3个具有这些信息的用户都应该存储在一个数组中
当页面加载时,数组变空
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
时,我只返回一个结果(teacher)。因此,出于某种原因,我的循环只迭代一次
$teachers = new TeacherSearch();
$allTeachers = $teachers->showAllTeachers();
if(is_array($allTeachers)){
foreach($allTeachers as $key => $teacher){
echo $key;
echo $teacher;
echo '<br />';
}
}
$teachers=新教师搜索();
$allTeachers=$teachers->showAllTeachers();
if(is_数组($allTeachers)){
foreach($key=>$teacher的所有教师){
echo$key;
老师;
回声“
”;
}
}
非常感谢您的帮助
其他信息
数据库
教师表
用户表
用户表数据
循环只执行一次似乎不是问题,在循环中添加
echo'test'
,您将看到它被执行多次(当然,只要$teachers
有多个元素)
问题是您在每个foreach
循环执行上覆盖了$teacherInfo
,而不是向其追加新数组
替换:
$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']);
循环只执行一次似乎不是问题,在循环中添加
echo'test'
,您将看到它被执行多次(当然,只要$teachers
有多个元素)
问题是您在每个foreach
循环执行上覆盖了$teacherInfo
,而不是向其追加新数组
替换:
$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']);
$teacherInfo=array(…)@PierreGranger实际上,
$teacherInfo=array()代码>在循环之外,因此$teacherInfo
只初始化一次(这是所需的行为)。问题在于语句$teacherInfo=array('name'…
)中$teacherInfo
后面缺少括号,该语句覆盖变量而不是向其追加数组。我指的是循环中的一个,$teacherInfo=array('name'…),不是循环前的一个。对,我想我误解了你的评论,很抱歉。$teacherInfo=array(…)@PierreGranger实际上,$teacherInfo=array();
在循环之外,因此$teacherInfo
只初始化一次(这是所需的行为)。问题源于语句$teacherInfo=array('name'…
)中$teacherInfo
后面缺少括号,该语句覆盖变量而不是向其追加数组。我指的是循环中的一个,$teacherInfo=array('name'…),不是循环之前的那个。对,我想我误解了你的评论,对此很抱歉。谢谢你的回答,我现在遇到的问题是,在添加建议的[]
括号时,我得到了一个数组到字符串的转换错误。错误发生在这里$allTeachers=$teachers->showAllTeachers()
当我执行打印时,它会显示具有所有正确值的数组`但是当我尝试使用$allTeachers
循环时,我遇到上述错误数组到字符串转换错误来自您的echo$teacher;
在第二个脚本中。$teacher
是一个数组,您需要对其进行内爆或循环浏览。感谢您的回答,我现在遇到的问题是,在添加建议的[]
括号时,我遇到了一个数组到字符串转换错误。错误发生在这里$allTeachers=$teachers->showAllTeachers()
当我执行打印时,它会显示具有所有正确值的数组`但是当我尝试使用$allTeachers
循环时,我遇到上述错误数组到字符串转换错误来自您的echo$teacher;
在第二个脚本中。$teacher
是一个数组,您需要对其进行内爆或循环通过它。