Php 而循环仅获取最后一行

Php 而循环仅获取最后一行,php,sql-server,Php,Sql Server,我试图把这张表中的一些数字加起来,出于某种原因,它只给了我最后一行。当我使用SQLServerStudio手动检查表时,数据就在那里 $sql = "SELECT * FROM dbo.timesheets"; $stmt = sqlsrv_query( $conn, $sql ); if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); } while( $row = sqlsrv_fetch_array( $stm

我试图把这张表中的一些数字加起来,出于某种原因,它只给了我最后一行。当我使用SQLServerStudio手动检查表时,数据就在那里

$sql = "SELECT * FROM dbo.timesheets";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $totalVacation = $row['sunV1']+$row['sunV2'];
}

在每次迭代中重置值,覆盖上一次迭代中的变量:

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $totalVacation = $row['sunV1']+$row['sunV2'];
}
您希望不断地将这些值相加。即,新值是旧值加上当前值:

$totalVacation = 0;
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $totalVacation = $totalVacation + $row['sunV1']+$row['sunV2'];
}
或者,简写语法:

$totalVacation = 0;
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $totalVacation += $row['sunV1']+$row['sunV2'];
}

不要覆盖循环中的$totalVacation,总结:
totalVacation+=$row['sunV1']+$row['sunV2']


您需要在while(…)语句上方初始化变量
$totalVacation
,通常使用
$totalVacation=0

使用
$totalVacation+=$row['sunV1']+$row['sunV2']您现在正在过度写入上一个值,而在循环之后,它只是最后一次求和。