2016-11-18 26 views
1

フォームの送信後に検索結果を返します。私がSMALLDATETIMEでNULLを許可するフィールドに到達するまでは、すべて正常に動作しています。返された行の少なくとも1つは、フィールドがNULLである。下のコードでわかるように、NULLでないときはDateからStringに変換しても問題はありませんが、NULLの行のエラーメッセージが表示されます。DateTimeオブジェクトが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ことを期待し、

+0

($ search_results_option-> HardwareAssetLastUpdateTime === NULL)の場合は、チェックを追加できます。おそらく、あなたのDBのLastUpdateTimeに "on update current_timestamp"フラグを追加すると助けになるかもしれません。 – mirko911

+0

date_formatはnullの日付値では機能しません。このケースを管理する必要があります –

答えて

2
<td>".(
    is_null($search_results_option->HardwareAssetLastDiscoveryScanDate) ? '' : 
     date_format($search_results_option->HardwareAssetLastDiscoveryScanDate, 
     "d/m/Y H:i") 
    ) 
."</td>"; 
何も表示されませんエルス、NULL値をチェックします
+0

ありがとうございました – TheTechnicalPaladin

1

に与えられた nullは

、これを試してみてください
<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-> HardwareAssetLastDiscoveryScanDate = nullのDATE_FORMAT(新しい日時($ search_results_option-> HardwareAssetLastDiscoveryScanDate)、「D/M/YH:I "): '')

これは、それがフォーマットされた日時が表示されますnullでない場合、EITは

+0

HardwareAssetLastDiscoveryScanDateの$ search_results_optionが空です – TheTechnicalPaladin

+0

これもありがとうございました – TheTechnicalPaladin

関連する問題