while循环获得第二个值而不是第一个值? PHP MSQL SP FPDF

时间:2018-09-30 18:07:54

标签: php sql-server

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 );
        }

谢谢

1 个答案:

答案 0 :(得分:2)

如果您看一下这段代码:

if($dbRow = sqlsrv_fetch_array($dbQuery, SQLSRV_FETCH_ASSOC))

您将看到:

  1. 它在while循环之前出现

  2. 因此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));