我正在尝试从此表中汇总一些数字,由于某种原因,它只给了我最后一行。当我使用SQL Server Studio手动检查表时,数据在那里。
$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'];
}
答案 0 :(得分:1)
您将在每次迭代中重置值,覆盖上一次迭代中变量所包含的内容:
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'];
}
答案 1 :(得分:0)
不要在循环中覆盖$ totalVacation,总结一下:$totalVacation += $row['sunV1']+$row['sunV2'];
。
您需要在while(...)语句上方初始化变量$totalVacation
,通常用$totalVacation = 0;
完成。