my while循环从第二个值开始,但不显示第一个值。请提供任何帮助。
如下所示的while循环语句我正在使用FPDF导出结果,但是我不确定这与向前调用第二个值有什么关系。
while($dbRow = sqlsrv_fetch_array($dbQuery, SQLSRV_FETCH_ASSOC)) {
$pdf->cell(0,10,'Impact for'.' '.$dbRow['Stakeholder_ID'].' is: '.iconv("UTF-8", "ISO-8859-1", "£").''.$dbRow['Stakeholder_Return'],0,1 ,'',true );
}
谢谢
答案 0 :(得分:2)
如果您看一下这段代码:
if($dbRow = sqlsrv_fetch_array($dbQuery, SQLSRV_FETCH_ASSOC))
您将看到:
它在while循环之前出现
因此while循环将获得第二行(因为 sqlsrv_fetch_array 返回下一个可用行)
这是什么意思,通过在if语句中调用 sqlsrv_fetch_array ,可以增加计数器的数量,并在下次调用时获得第二行。
解决方案:
$isFirstRow = true;
while($dbRow = sqlsrv_fetch_array($dbQuery, SQLSRV_FETCH_ASSOC)) {
if($isFirstRow){
$pdf->cell(0,10,'Overall socio-environmental impact ratio: '.iconv("UTF-8", "ISO-8859-1", "£").''.$dbRow['Schema_Return'],0,1,'',true );
$isFirstRow = false;
}
$pdf->cell(0,10,'Impact for'.' '.$dbRow['Stakeholder_ID'].' is: '.iconv("UTF-8", "ISO-8859-1", "£").''.$dbRow['Stakeholder_Return'],0,1 ,'',true );
}
您也可以删除以下行:
do{
//...Code in between
} while ( sqlsrv_next_result($dbQuery));