繁体   English   中英

PHP,在SQL中遍历查询结果

[英]PHP, looping through query results in SQL

我目前在尝试为期望的结果创建循环时遇到麻烦。

我目前正在创建一个学生记录卡,其中存储了不同学生(假学生)的大量数据。

我创建了一个查询,该查询返回了我需要的相关数据(参见图一,phpmyadmin)

SELECT mods.mid, mtitle, credits, enrl.ayr 
FROM stud, smod, mods, enrl 
WHERE stud.sid = '154279' AND stud.sid = smod.sid 
AND smod.mid = mods.mid AND stud.sid = enrl.sid 
ORDER BY `enrl`.`ayr`  DESC

从结果中可以看到,有一些属性:中
标题
学分
艾尔

我已按艾尔降序排列了。 我正在尝试创建一个循环,该循环将贯穿此查询的返回值并打印出每一行,直到当前年份结束为止。 几乎将同一年的所有行(例如“ 2001/02”)分组到一个子表中,然后我可以命名和打印。

如您从我的学生记录页面的第二张图片所看到的,我需要能够打印该一年的所有记录,然后为下一个现有年份创建一个新的页眉,并打印该年度所有包含的行。

{编辑} PHP代码:

$query = "SELECT mods.mid, mtitle, credits, enrl.ayr 
            FROM stud, smod, mods, enrl 
            WHERE stud.sid = '154279' AND stud.sid = smod.sid AND smod.mid = mods.mid AND stud.sid = enrl.sid 
            ORDER BY enrl.ayr  DESC
        ";


$scap = ''; 
$curYear = $row['ayr'];  
if($result = $link->query($query)) {
        while ($row = $result->fetch_assoc() && $row['ayr'] == $curYear) { 
            $scap .= "<table id=\"test\" style=\"width:100%\"> 
                        <tr> 
                            <td> " . $row['mid'] . " </td> <td> " . $row['mtitle'] . "</td> <td> " . $row['credits'] . " <td> " . $row['ayr'] . "</td>
                        </tr> 
                </table>"; 
        }$result->free(); 
    } 

提前致谢。

图片1 图片2

假设您要为整个页面最多提交一个查询。 就像我在评论中说的

我会有一个变量,称为$ curYear。 以一些垃圾字符串开始。 在循环中,如果cur year与$ curYear不同,请在输出中创建一个新细分,但无论更新$ curYear变量

那并不是要干扰您现有的源代码(那么多)。 这只是一个警报,提醒您更改年份(年份/学期不限)。

因此,它开始时是一些垃圾值,例如“ 797fsdf *”

现在,请记住,您已经拥有了所有年份从该结果集中获得的所有年份。

$curYear我在上面那个粉红色块中所说的将变量$curYear

$row['ayr']

当这两个值不同时,就可以进行所需的HTML处理(创建一个新的html表,一个新的div,谁在乎)。 我们称其为分离物。

无论如何,在输出行之后,请确保已将$curYear设置$curYear $row['ayr'] 为什么这么重要? 因为下一个循环您想知道是否需要执行分离操作。

棘手的部分是,如果您正在处理html表,则如果不在第一年,则必须关闭上一个表(前一年)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM