簡體   English   中英

來自sqlsrv_fetch_array的SQL結果行返回零值

[英]SQL result rows from sqlsrv_fetch_array returns zero values

我有一個SQL查詢(針對MSSQL數據庫),如下所示:

$sql_timekort = "SELECT
status,
timematrise.ansatt,
SUM(normaltimer) AS normaltimer,
SUM(overtid_1) AS overtid_1,
SUM(overtid_2) AS overtid_2,
SUM(kilometer) AS kilometer,
COUNT(diett) AS diett,
COUNT(CASE WHEN diett = 'ja' THEN 1 ELSE NULL END) AS diett

FROM timematrise

WHERE status = '6'
AND dato LIKE '2019-02%'

GROUP BY ansatt, status";

由sqlsrv在PHP中運行,如下所示:

$stmt = sqlsrv_query($timeregistrering_tilkobling, $sql_timekort); if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); }

該查詢的結果在SQL Management Studio中如下所示:

在此處輸入圖片說明

此結果符合預期,並且SQL查詢似乎正常。 但是當我像這樣做一個sqlsrv_fetch_array時:

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {

    echo "<pre>";
    print_r($row);
    echo "</pre>";

}

結果如下:

Array
(
    [status] => 6
    [ansatt] => 270
    [normaltimer] => .00
    [overtid_1] => .00
    [overtid_2] => .00
    [kilometer] => 0
    [diett] => 0
)

這就是我感到困惑的地方。 數字在哪里 每個數字都是.00或0。

該表的定義如下:

status: int
ansatt: int
normaltimer: decimal(18, 2)
overtid_1: decimal(18, 2)
overtid_2: decimal(18, 2)
kilometer: decimal(18, 0)
diett: varchar(50)

任何幫助表示贊賞!

我無法重現您的錯誤,因為在Windows環境(SQL Server 4.0.3的PHP驅動程序,SQL Server 2012)中, decimal列中的所有值均會正確返回。 但這是在Linux中報告的問題 報告的問題是:1)money字段在點之后返回4位數字,並且2)小數字段在開始時不返回0。

從用於SQL Server的PHP驅動程序的5.6版開始,您可以在兩個驅動程序的連接和語句級別使用FormatDecimals選項,以格式化獲取的結果中的十進制值。 因此,這將是顯而易見的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM