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