php - PHP中的嵌套while循环从数据库中获取数据
问题描述
<?php
$sqlquerypmenu = "select *
from subsubmenu
where submenu_id=1
and position='left'
and status=1";
if($querypmenu = sqlsrv_query($conn,$sqlquerypmenu)){
if(sqlsrv_has_rows($querypmenu) === true){
while($rowdata = sqlsrv_fetch_array($querypmenu, SQLSRV_FETCH_ASSOC)){
?>
<h4 class="title-small folder_name"> <?php echo $rowdata ['website_title']; ?> </h4>
<?php
$id = $rowdata['id'];
$filequerymenu = "select *
from upload_files
where main_menu='value_name'
and sub_menu='value_key'
and subsub_menu= $id ";
if($filemenu = sqlsrv_query($conn,$filequerymenu)){
if(sqlsrv_has_rows($filemenu) === true){
while($filedata = sqlsrv_fetch_array($filemenu, SQLSRV_FETCH_ASSOC)){ ?>
<a class="smalltext font_val" href="<?php echo DOCUMENT_URL.$filedata ['file_name']; ?> " target="_blank" ><?php echo $filedata['document_name']; ?></a>
<?php
}
}
}
}
}
}
?>
在嵌套的while 循环中,第二个while 循环只显示第一行数据,不显示其余数据。
我怎样才能解决这个问题?
解决方案
考虑一次JOIN
查询一次数据库。可能在循环中打开另一个 fetchwhile
会导致实例问题:
<?php
...
$sql = "select s.website_title, u.file_name, u.document_name
from upload_files u
inner join subsubmenu s ON u.subsub_menu = s.id
where u.main_menu = 'value_name'
and u.sub_menu = 'value_key'
and s.submenu_id = 1
and s.[position] = 'left'
and s.[status] = 1
order by s.id, s.website_title;"
$title = "";
if($result = sqlsrv_query($conn, $sql)){
if(sqlsrv_has_rows($result) === true){
while($rowdata = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
if($title != $rowdata['website_title']) {
$title = $rowdata['website_title']
?>
<h4 class="title-small folder_name"> <?php echo $rowdata ['website_title']; ?> </h4>
<?php
}
?>
<a class="smalltext font_val" href="<?php echo DOCUMENT_URL.$filedata ['file_name']; ?> " target="_blank" ><?php echo $filedata['document_name']; ?></a>
<?php
}
}
}
?>
推荐阅读
- heroku - 如何查看 Heroku 应用程序何时被删除?
- mysql - 将 Woocommerce 产品简短描述复制到 ACF
- c - 如何删除任意 HWND 边框 (WinAPI)?
- python - 每次提交时更新版本号
- php - 为什么即使我停止了主管,laravel 工作也没有被停止?
- javascript - 只有第一行中的按钮在使用 javascript 的 html 表中工作
- c# - 过期的accesstoken问题xamarin forms app
- javascript - querySelectorAll 包括自我
- c++ - 将placement new 与存储类一起使用时的额外构造
- javascript - 格式化时间错误 - “10.03”变成“10.3”