14赞
406
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《PHP/MYSQL循环只迭代一次,无法将数据存储在数组中》经验,为你挑选了1个好方法。

我有以下代码连接两个表,然后从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']);


推荐阅读
author-avatar
bw32dts
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有