簡體   English   中英

使用PHP將MSSQL日期時間打印到html時出現問題(sqlsrv擴展名)

[英]Problem printing MSSQL datetime to html using PHP (sqlsrv extension)

我有一個靈活的代碼塊,可以將查詢結果打印到一個簡單的html表中。 但是,當該表包含“ datetime”類型的字段時,print()函數將不起作用,並且我的循環結束。

過去,使用PHP和MySQL(而不是Microsoft現在使用的SQL Server)打印日期沒有問題,因此我不確定現在缺少什么。

這是代碼:

// $row is the current row.
// $nkeys is the array of (String) keys that correspond to columns in the table.
do {
    print ("<tr>\n");
    foreach($nkeys as $k) {
        echo ("<td>$row[$k]</td>");
    } 
    print ("</tr>\n");
} while ($row = sqlsrv_fetch_array($stmt));

除了print()或echo以外,是否還有其他特殊功能可以正確打印日期?

SQLSRV擴展返回DateTime對象。 只需將其格式化為您喜歡的格式

if( !is_null($row[$k]) ){
    echo $row[$k]->format('r');
}

在您使用的程序界面中,您還可以通過提供ReturnDatesAsStrings連接選項 (此選項在PDO界面中不可用)來禁用該功能,但是通常沒有理由這樣做。

盡管您可以通過SQLSRV更改返回日期時間對象的行為。 這可以通過在連接選項中將ReturnDatesAsStrings保持為TRUE來完成。 如下更改連接代碼將達到目的:

$link = sqlsrv_connect( $db_server_name, array( "UID"=>$db_user,
            "PWD"=>$db_pass,
            "Database"=>$db_name,
            "ReturnDatesAsStrings"=>true
          ));

這樣,您現有的代碼echo ("<td>$row[$k]</td>"); 將返回值,而沒有任何其他解決方法。 如果有很多地方可以應用“-> format('r')”,請考慮一下。

在jqGrid中使用日期字段時,在連接字符串中包含此字段非常重要。

"ReturnDatesAsStrings"=>true

很棒的東西,謝謝Mrigesh!

使用SQLSRV時,不能使用以下內容:

date('d/m/y', strtotime($row['ActivityDate']))

相反,您必須使用:

date_format($row['ActivityDate'], 'd/m/y')

暫無
暫無

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

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