我有一个灵活的代码块,允许我将查询结果打印到一个简单的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之外的特殊功能才能正确打印日期?
答案 0 :(得分:4)
SQLSRV扩展返回DateTime个对象。根据您的喜好format:
if( !is_null($row[$k]) ){
echo $row[$k]->format('r');
}
在您使用的过程界面中,您还可以通过提供ReturnDatesAsStrings
connection option来禁用该功能(此选项在PDO界面中不可用),但通常没有理由这样做。
答案 1 :(得分:0)
使用SQLSRV时,不能使用以下内容:
date('d/m/y', strtotime($row['ActivityDate']))
相反,你必须使用:
date_format($row['ActivityDate'], 'd/m/y')
答案 2 :(得分:0)
虽然您可以通过SQLSRV更改返回Date Time Object的行为。这可以通过在连接选项中保持 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>");
将返回值,而无需任何其他解决方法。如果你有很多地方要申请“ - &gt;格式('r')”,请考虑这个。
答案 3 :(得分:0)
在jqGrid中使用日期字段时,在连接字符串中使用此字符非常重要。
"ReturnDatesAsStrings"=>true
很棒的东西,谢谢Mrigesh!