PHP Mysqli为提供的每个数据选择多行数据

PHP Mysqli为提供的每个数据选择多行数据,php,mysqli,Php,Mysqli,我正试图从两个不同的表中为每个ID获取三个内容,即为我RegID 我的第一个查询是从表中选择DISTINCT RegID\u one,如果有多个,则应在其中选择allAttendanceStatus=缺席和AttendanceDate=Todays\u date 对于选择的每个RegID,应从同一表中选择不同的主题和标准 同一个id,它应该从表2中选择移动电话号码,它应该回音,然后重复第二次RegID如果存在,同样的应该重复到最后一次RegID 我得到的是DISTINCTregid,但在同一wh

我正试图从两个不同的表中为每个
ID
获取三个内容,即为我
RegID

  • 我的第一个查询是从表中选择
    DISTINCT RegID\u one
    ,如果有多个,则应在其中选择all
    AttendanceStatus=缺席
    AttendanceDate=Todays\u date

  • 对于选择的每个
    RegID
    ,应从同一
    表中选择
    不同的主题
    标准

  • 同一个id,它应该从表2中选择移动电话号码,它应该回音,然后重复第二次
    RegID
    如果存在,同样的应该重复到最后一次
    RegID
  • 我得到的是
    DISTINCT
    regid,但在同一while语句中,如果我使用fetch结果获得subject和standard以及register id,它只给我一个id、subject和standard,我不知道如何解决这个问题

    我的编辑 现在,在我的示例数据库中,我有两个条目在
    AttendanceStatus
    中表示缺席,因此在我的第一次选择中,我会删除重复项(如果存在),然后选择那些运行良好的2
    RegID
    ,现在我想在第二次查询中为每个
    RegID
    选择
    Standard
    subject
    也就是说,在while语句中有两个
    RegID
    它只给了我一个,我需要这两个缺席的reg与各自不同的主题和标准一起显示出来

    简单一点

  • 首先
    RegID
    通过删除重复项来选择缺席的人员
  • 为第一个选择的
    RegID的
  • 分别对每个
    RegID
    Standard
    subject
    进行回波
  • 我的表是一个数据库

    AttendanceDate           Standard           Subjects        RegID   AttendanceStatus        
    2016-01-08 00:00:00     III BSc PCM     PHY/CHEM PRACTICAL  1382043         Present
    2016-01-08 00:00:00     III BSc PCM     PHY/CHEM PRACTICAL  1382044         Present
    2016-01-08 00:00:00     III BSc PCM     PHY/CHEM PRACTICAL  1382045         Present
    2016-01-08 00:00:00     III BSc PCM     PHY/CHEM PRACTICAL  1382046         Absent
    2016-01-08 00:00:00     III BSc PCM     PHY/CHEM PRACTICAL  1382047         Absent
    
    PHP Mysqli代码

    $query="SELECT DISTINCT RegID FROM table_one WHERE AttendanceDate='2016-01-08 00:00:00' and AttendanceStatus='Absent'" ;
    $data=mysqli_query($mysqli,$query)or die(mysqli_error());
    if(mysqli_num_rows($data) > 0) {
        while($row=mysqli_fetch_array($data)){
            $StudentRegID= $row['RegID'];
            $query="SELECT   DISTINCT(CONCAT(Standard,Subjects)) AS standard_and_subject , RegID FROM table_one WHERE AttendanceDate='2016-01-08 00:00:00' and RegID='$StudentRegID'" ;
            $data=mysqli_query($mysqli,$query)or die(mysqli_error());
            if(mysqli_num_rows($data) > 0) {
                while($row=mysqli_fetch_array($data)){
                    if($row['RegID'] != '' && $row['RegID'] != NULL){
                        $RegID = $row['RegID'];
                        $standard_and_subject = $row['standard_and_subject'];
                        echo $standard_and_subject;
                        echo $RegID;
                    }
                }
            }
        }
    }
    

    存储mysql对象会产生相同的变量名

    试试这个编码

     while($standard_row=mysqli_fetch_array($data)){
    
                        if($standard_row['RegID'] != '' && $standard_row['RegID'] != NULL){
                            $RegID = $standard_row['RegID'];
    
                                $standard_and_subject = $standard_row['standard_and_subject'];
                            echo $standard_and_subject;
                            echo $RegID;
    
                        }
    

    使用带有
    连接的单个查询,而不是
    foreach
    循环内的查询。而不是在PHP中检查空的
    RegID
    ,而是在SQL中过滤掉它们

    $query = "SELECT DISTINCT t1.RegID, CONCAT(t2.Standard, t2.Subjects) AS standard_and_subject
              FROM (SELECT DISTINCT RegID
                    FROM table_one
                    WHERE AttendanceDate='2016-01-08 00:00:00'
                    AND AttendanceStatus='Absent'
                    AND RegID != ''
                    AND RegID IS NOT NULL) AS t1
              JOIN table_one AS t2 ON t1.RegID = t2.RegID
              WHERE t2.AttendanceData = '2016-01-08 00:00:00'";
    $data = mysqli_query($query) or die(mysqli_error());
    if (mysqli_num_rows($data) > 0) {
        while ($row = mysqli_fetch_assoc($data)) {
            echo $row['standard_and_subject'];
            echo $row['RegID'];
        }
    }
    

    一行需要多行,对吗?或者你需要所有的regid在一个数组中,标准和主题在一个数组中,就像这样?你将如何获得它?你能解释一下吗?@jilesh是的,但对于具体的id,最终我需要从不同的表中选择一个值,正如我在第3点中提到的。请你编辑你的帖子,并设置你当前获得的内容和你期望的内容吗?@jilesh我编辑了我的帖子,请告诉我你需要什么\谢谢你的回复我在第二个查询中做了,但尽管有两个注册id,但如果需要第一个,它只会为第一个查询提供结果,使用echo$StudentRegID;第二个使用echo$standard_row['RegID'];