我正在尝试使用PHP中的SQL Server中的表的不同值来填充HTML表。这是代码。
...
while($datosPerfil = sqlsrv_fetch_array($resultado)){
echo "<tr>";
echo "<td>";
echo $datosPerfil['CPR_Name'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_SC_Id'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_Tel_Number'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_Startup_Date'];
echo "</td>";
echo "</tr>";
}
....
字段“ CON_Startup_Date ”是日期类型并允许空值。这就是出现的错误:
可捕获的致命错误:类DateTime的对象无法转换为字符串
当我写:
echo $datosPerfil['CON_Startup_Date']->format("Y-m-d");
它有效,但到达空值时显示错误:
致命错误:在null上调用成员函数format()
任何允许在日期类型中正确运行echo值并且正确运行的解决方案吗?
答案 0 :(得分:1)
查找以下代码:
while($datosPerfil = sqlsrv_fetch_array($resultado)){
echo "<tr>";
echo "<td>";
echo $datosPerfil['CPR_Name'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_SC_Id'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_Tel_Number'];
echo "</td>";
echo "<td>";
echo (empty($datosPerfil['CON_Startup_Date'])) ? "-" : $datosPerfil['CON_Startup_Date']->format('Y-m-d');
echo "</td>";
echo "</tr>";
}
有关Ternary Operator的更多信息。
答案 1 :(得分:1)
您也可以使用try/catch
块或简单isset
来确定在<td>
中显示哪个值,其中包含startupDate
值,如下所示:
<?php
//...
while($datosPerfil = sqlsrv_fetch_array($resultado)){
echo "<tr>";
echo "<td>";
echo $datosPerfil['CPR_Name'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_SC_Id'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_Tel_Number'];
echo "</td>";
echo "<td>";
try{
$startupDate = $datosPerfil['CON_Startup_Date']->format("Y-m-d");
}catch(Exception $e){
// JUST SET A DEFAULT HERE, EVEN THE STRING "UNKNOWN" MIGHT BE OK ;-)
$startupDate = "2016-07-12";
}
echo $startupDate;
echo "</td>";
echo "</tr>";
}
使用isset()
上面的代码变为:
<?php
//...
while($datosPerfil = sqlsrv_fetch_array($resultado)){
echo "<tr>";
echo "<td>";
echo $datosPerfil['CPR_Name'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_SC_Id'];
echo "</td>";
echo "<td>";
echo $datosPerfil['CON_Tel_Number'];
echo "</td>";
echo "<td>";
// JUST SET A DEFAULT HERE, EVEN THE STRING "UNKNOWN" MIGHT BE OK ;-)
$startupDate = isset($datosPerfil['CON_Startup_Date']) ? $datosPerfil['CON_Startup_Date']->format("Y-m-d") : "2016-07-12";
echo $startupDate;
echo "</td>";
echo "</tr>";
}
答案 2 :(得分:-1)
试试这段代码。希望这段代码可能对您有所帮助。
$result=$datosPerfil['CON_Startup_Date']->format("Y-m-d");
if ($result != null) {
echo $result;
} else { // format failed
echo "null";
}