2016-09-23 3 views
0

В настоящее время я использую php для подключения таблиц в моей базе данных ms sql, чтобы появиться на моей веб-странице. Тем не менее, таблица имеет проблемы с полями даты, которые являются нулевыми в моей таблице sql.Cant echo date null field

Стол представляет собой ремонт гаража для транспортных средств.

create table [VEHICLE_STATUS](
[STATUS_ID] [int] identity (1,1) not null, 
[VEHICLE_ID] [INT] not null, 
[REPAIR_START_DATE] [DATE] not null, 
[REPAIR_END_DATE] [DATE] not null, 
[DESCRIPTION] [nvarchar] (200) not null 
); 

Однако не все транспортные средства для ремонта, поэтому не имеют даты начала и окончания ремонта.

Я попытался изменить поле даты, чтобы изменить «доступный» вместо нулевой

Ошибка, которая приходит есть;

Fatal error: Call to a member function format() on null in C:\xampp\htdocs\view.php on line 57

<?php 
      $server = "\SQLEXPRESS"; 
     $options = array("Database"=>"test"); 


     $conn = sqlsrv_connect($server, $options); 


     if(!$conn) die(print_r(sqlsrv_errors(), true)); 

$query = "select * from VW_VEHICLE_STATUS"; 
$sql = sqlsrv_query($conn, $query); 


      echo "<table >"; 
      echo "<tr>"; 
      echo "<td style='border:1px solid black;Font-size=18;Font-weight=bold'>"; 
      echo "MAKE"; 
      echo "</td>"; 
      echo "<td style='border:1px solid black;Font-size=18;Font-Weight=bold'>"; 
      echo "MODEL"; 
      echo "</td>"; 
      echo "<td style='border:1px solid black;Font-size=18;Font-Weight=bold'>"; 
      echo "REGISTRATION"; 
      echo "</td>"; 
       echo "<td style='border:1px solid black;Font-size=18;Font-Weight=bold'>"; 
      echo "REPAIR_START_DATE"; 
      echo "</td>"; 
       echo "<td style='border:1px solid black;Font-size=18;Font-Weight=bold'>"; 
      echo "REPAIR_END_DATE"; 
      echo "</td>"; 
       echo "<td style='border:1px solid black;Font-size=18;Font-Weight=bold'>"; 
      echo "DESCRIPTION"; 
      echo "</td>"; 
      echo "</tr>\n"; 

      while ($row = sqlsrv_fetch_array($sql)) 
      { 
       echo "<tr>"; 
       echo "<td style='border:1px solid black'>"; 
       echo $row['MAKE']; 
       echo "</td>"; 
       echo "<td style='border:1px solid black'>"; 
       echo $row['MODEL']; 
       echo "</td>"; 
       echo "<td style='border:1px solid black'>"; 
       echo $row['REGISTRATION']; 
       echo "</td>"; 
        echo "<td style='border:1px solid black'>"; 
       echo $row['REPAIR_START_DATE']->format("Y-M-d"); 
       echo "</td>"; 
        echo "<td style='border:1px solid black'>"; 
       echo $row['REPAIR_END_DATE']->format("Y-M-d"); ; 
       echo "</td>"; 
        echo "<td style='border:1px solid black'>"; 
       echo $row['DESCRIPTION']; 
       echo "</td>"; 
       echo "</tr>\n"; 
      } 
      echo "</table>"; 

      sqlsrv_close($conn); 
      ?> 
+2

Какой смысл показывать некоторые sql, когда ваше сообщение об ошибке является ошибкой PHP? «Эй, доктор, я сломал ногу, и он повсюду брызгает кровью и осколками костей. Вот фотография моей машины, чтобы вы могли понять, как исправить меня». –

+0

@ Джейн - вам нужно рассмотреть возможность размещения вашего PHP-кода в этой строке, показанной на ошибка и метка это PHP для лучших ответов – techspider

+0

Наиболее вероятной проблемой может быть не проверка нулей перед использованием формата даты столбца – techspider

ответ

0

Попробуйте проверить, если значение является экземпляром DateTime перед вызовом формата метод на нем.

echo $row['REPAIR_END_DATE'] instanceof DateTime ? $row['REPAIR_END_DATE']->format('Y-m-d') : ''; 
+0

Ник, который сработал вам большое спасибо за помощь! – Jane