【问题标题】:PHP Mysqli Select Multiple rows data foreach providedPHP Mysqli Select Multiple rows data foreach 提供
【发布时间】:2016-04-12 21:14:43
【问题描述】:

我正在尝试从 2 个不同的表中为每个 ID 获取三件事,即对我来说 RegID

  1. 我的第一个查询是选择DISTINCT RegID from table_one,如果有多个它应该选择所有AttendanceStatus =AbsentAttendanceDate = Todays_date

  2. 对于每个选择的RegID,它应该从同一个table_one中选择DISTINCT SubjectsStandard

  3. 它应该从table_two中选择手机号码的相同ID,它应该回显然后重复第二个RegID,如果存在,同样应该重复直到最后一个RegID

我得到DISTINCT regid,但在同一个while语句中,如果我使用提取结果来获取主题和标准以及注册ID,它只给我一个id、主题和标准,我不知道如何解决这个问题

我的编辑 现在在我的示例数据库中,我有两个条目在 AttendanceStatus 中表示不存在,所以在我的第一个选择中,如果存在,我将删除重复项并选择那些 2RegID 工作正常 现在每个 @ 987654336@ 我想在我的第二个查询中选择Standardsubject,而语句艰难有两个RegID 它只给我一个我需要这两个缺席的reg 与它们各自不同的一起显示学科和标准

简单点

  1. 首先RegID 通过删除重复项来选择缺席的人
  2. 选择StandardSubjects 作为第一个选择的RegID's
  3. 分别回显 RegIDStandardSubjects 对于每个 RegID

我的 table_one 数据库

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;
                }
            }
        }
    }
}

【问题讨论】:

  • 您需要多行代替一行,对吗?或者你需要一个数组中的所有 regid 和一个数组中的标准和主题,像这样?你将如何得到它,你能解释一下吗?
  • @jilesh 是的,但是对于特定的 id,最后我也需要从不同的表中选择一个值,正如我在第 3 点中提到的那样
  • 请问您可以编辑您的帖子并设置您当前获得的内容和期望的内容吗?
  • @jilesh 我已经编辑了我的帖子,请让我知道你需要什么\

标签: php mysqli


【解决方案1】:

您将 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;

                    }

【讨论】:

  • 感谢您的回复,与我在第二个查询中所做的相同,但虽然有两个 reg id,但它只给了我第一个的结果
  • 如果你需要第一个使用 echo $StudentRegID;第二个使用 echo $standard_row['RegID'];
【解决方案2】:

使用带有JOIN 的单个查询,而不是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'];
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2014-10-26
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    相关资源
    最近更新 更多