[英]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.