我的第一篇文章,尽可能地做到尽可能详尽,如果我弄错了某些东西,请提前道歉。我是PHP/SQL的新手,请耐心等待。我发现了几个有关循环内循环的类似问题,但我不确定这些解决方案适用于我的情况。PHP/SQL在嵌套while循环中替代db调用
我有两个表,tws_workshopNames和tws_workshops。 tws_workshopNames中的主键在tws_workshops中用作外键来关联这两个表。我将它分成两张表的原因是有很多情况下,在多个日期/时间提供相同的研讨会名称/价格/描述。
无法提交截图,但这里的表的设计在SQL Server的一个简化外形:
tws_workshopNames:
workshopNameID (pri)
description
price
etc.
tws_workshops:
workshopID (pri)
workshopNameID (foreign)
date
time
etc.
我希望发生的基本上是这样的:
查询tws_workshopNames表显示workshopName /价格/说明/等。
每个workshopName经过tws_workshops表,并显示具有相同workshopNameID
换句话说所有记录,经过tws_workshopNames并显示第一workshopName,然后通过tws_workshops并显示相关的所有记录然后转到tws_workshopNames中的下一个workshopName,显示与该workshopName相关的所有记录。
我能够通过在while循环中使用while循环来实现期望的结果,其中外循环执行呼叫tws_workshopNames和嵌套循环调用tws_workshops表。不过,我一直在阅读很多关于这方面的内容,很明显这不是一个好方法,因为它会导致对db的很多调用,但我很难理解任何替代方法。
所需的输出:
Workshop 1
price
description
date (of workshop 1)
time (of workshop 1)
...
Workshop 2
price
description
first date (of workshop 2)
first time (of workshop 2)
second date (of workshop 2)
second time (of workshop 2)
third date (of workshop 2)
third time (of workshop 2)
...
Workshop 3
price
description
date (of workshop 3)
time (of workshop 3)
...
etc.
下面是当前的代码与工作嵌套while循环:
// query workshopNames table, what types of workshops are available?
$query = mssql_init("tws_sp_workshopNames", $g_dbc);
// pull up result
$result = mssql_execute($query);
$numRows = mssql_num_rows($result);
while($row = mssql_fetch_array($result)) {
echo "
" . $row['workshopName'] . "
" . $row['price'] . "
" . $row['description'] . "";
$workshopNameID = $row['workshopNameID'];
// query workshops table, what are the dates/times for each individual workshop?
$query2 = mssql_init("tws_sp_workshops", $g_dbc);
mssql_bind($query2, "@workshopNameID", $workshopNameID, SQLVARCHAR);
//pull up result
$result2 = mssql_execute($query2);
$numRows2 = mssql_num_rows($result2);
while($row2 = mssql_fetch_array($result2)) {
echo $row2[date] . "";
echo $row2[time] . "
";
};
echo "
";
};
?>
的存储过程是非常简单的:
tws_sp_workshopNames = "SELECT workshopNameID, workshopName, description, location, price FROM tws_workshopNames"
tws_sp_workshops = "SELECT date, time, maxTeachers, maxStudents, teachersEnrolled, studentsEnrolled FROM tws_workshops WHERE [emailprotected]"
希望这一切相对清晰,我真正想要的是获得相同结果的更好方法,即一个解决方案s不涉及循环内的数据库调用。
在此先感谢您的帮助,已经连续几天敲我的头这一个...
-05-30
washe
如果觉得《php 嵌套while循环 PHP/SQL在嵌套while循环中替代db调用》对你有帮助,请点赞、收藏,并留下你的观点哦!