繁体   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