我在表单提交后返回一些搜索结果。一切正常,直到我到达一个SMALLDATETIME字段并允许NULL。至少有一个返回的行将字段设置为NULL。正如您在下面的代码中看到的那样,当它不是NULL时,我将它从Date转换为String没有问题,但是我收到一条错误消息,其中包含NULL的行。
有什么想法吗?
代码:
$search_results = sqlsrv_query($database_connection, $search_results_sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if($search_results){
$returned_rows = sqlsrv_has_rows($search_results);
if($returned_rows === true){
getAssetSearchData($search_results);
}
}
function getAssetSearchData($search_results){
while($search_results_option = sqlsrv_fetch_object($search_results)){
echo "
<tr>
<td class='col45'>".date_format($search_results_option->HardwareAssetLastUpdateTime,"d/m/Y H:i")."</td>
<td class='col46'>".$search_results_option->HardwareAssetLastUpdatedByName."</td>
<td class='col47'>".date_format($search_results_option->HardwareAssetLastDiscoveryScanDate,"d/m/Y H:i")."</td></tr>";
}
}
错误讯息:
警告:date_format()期望参数1为DateTimeInterface,
中给出的null
答案 0 :(得分:2)
<td>".(
is_null($search_results_option->HardwareAssetLastDiscoveryScanDate) ? '' :
date_format($search_results_option->HardwareAssetLastDiscoveryScanDate,
"d/m/Y H:i")
)
."</td>";
答案 1 :(得分:1)
试试这个,
<td class='col45'>".date_format(new DateTime( $search_results_option->HardwareAssetLastUpdateTime ),"d/m/Y H:i")."</td>
<td class='col46'>".$search_results_option->HardwareAssetLastUpdatedByName."</td>
<td class='col47'>".date_format(new DateTime( $search_results_option->HardwareAssetLastDiscoveryScanDate ),"d/m/Y H:i")."</td></tr>";
date_format()
在提供时需要日期为DateTime格式,您传递的是字符串。
另一件事可能是$search_results_option
为空
对于NULL值:
($ search_results_option-&gt; HardwareAssetLastDiscoveryScanDate!= null?date_format(new DateTime($ search_results_option-&gt; HardwareAssetLastDiscoveryScanDate),&#34; d / m / YH:i&#34;):&#39;&#39 ;)
这将检查空值,如果它不为null,它将显示格式化的日期时间,els eit将不显示任何内容