【发布时间】:2018-04-07 08:21:10
【问题描述】:
我正在尝试按部分订购项目列表。章节编号和标题在一张表中,章节内容在另一张表中。在另一个while循环中使用一个while循环,我想获取部分名称和编号。在第二个 while 循环中,我想获取部分内容。部分内容有一个名为部分编号的列,我将其传递给查询以获得适当部分的正确内容。我的问题是我只得到第一部分,第一部分只有一个内容。结果应该是第 1 节下的 5 个内容和第 2 节下的 6 个内容。我已经看到使用数组的类似问题和解决方案,但由于我还是个新手,我无法让它为我工作。
这是我的查询:
$host = 'localhost';
$dbname = 'myDB';
$username = "root";
$password = "";
$pdo = new PDO('mysql:dbname=myDB;host=localhost', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$i = 0;
$j= 0;
$cId = $_GET['cId'];
$z_content = $pdo->prepare("SELECT * FROM `cur_sections` WHERE `course_id` ='$cId'");
$z_content->execute();
while($obj = $z_content->fetch())
{
$section_no = $obj['sect_num'];
$section_name = $obj['section_name'];
$i++;
echo '<div style="padding-bottom: 10px;">
<a data-toggle="collapse" href="#demo'.$i.'" ><div
class="section_bck">
Section '.$section_no.': <b>'.$section_name.'</b>             <i class="fa fa-chevron-down" style="float:right;"></i></div></a>
</div>';
$p_content = $pdo->prepare("SELECT * FROM `course_material` WHERE `sect_num` ='$section_no' AND course_id='$cId'");
$p_content->execute();
while($obj2 = $p_content->fetch())
{
$j++;
$lecture_title = $obj2['lecture_title'];
$type_f = $obj2['file_type'];
echo '
<div id="demo'.$i.'" class ="collapse">
<div style="padding-bottom: 10px;">
<div class="section_bck_alt">
<i class="fa fa-'.$type_f.'"></i>  Lecture '.$j.': '.$lecture_title.'
</div>
</div>
</div>';
}
}
更新:
$cId 的值是 3,我从页面 url 获得。
数据库结构
表 1:
表 2:
我刚刚找到了问题的原因。 Bootstrap 崩溃以某种方式隐藏了我的其余查询结果。即使我使用增量值来更改 div ID。当我从循环中删除 div collapse 时,所有结果都会返回,除了我不能再隐藏内容的事实。
【问题讨论】:
-
是不是因为你在你的第二个 SQL -
`sect_num` ='1' AND -
我这样做是为了测试查询,我已将其改回
$section_no,但结果相同 -
请分享数据库截图,让我知道 $cid 的价值...所以我可以帮助你。
-
@TanmayPatel 谢谢,我已将信息添加到我的问题中
-
SQL 注入警报。不要将 $_GET 传递给 SQL。使用准备好的语句和位置参数。
标签: php html mysql twitter-bootstrap