PHP-从查询结果集回显日期

PHP-从查询结果集回显日期,php,sql-server,coldfusion,Php,Sql Server,Coldfusion,PHP新手;来自ColdFusion的背景。我正在设置一个PHP7测试页面,在这里我连接到一个SQLServerDB,执行一个select查询,并在一个循环中回显查询结果。这一切都很好,只是如果我尝试回显“datetime”或“date”类型的列,屏幕上什么也看不到。在回显之前,是否需要应用某种日期格式功能 另外,对于任何有ColdFusion背景的人来说,我注意到PHP在执行和输出查询时与CF相比有些麻烦。有什么窍门可以让事情变得更简单吗?有哪种PHP框架特别适合这一点 <?php //

PHP新手;来自ColdFusion的背景。我正在设置一个PHP7测试页面,在这里我连接到一个SQLServerDB,执行一个select查询,并在一个循环中回显查询结果。这一切都很好,只是如果我尝试回显“datetime”或“date”类型的列,屏幕上什么也看不到。在回显之前,是否需要应用某种日期格式功能

另外,对于任何有ColdFusion背景的人来说,我注意到PHP在执行和输出查询时与CF相比有些麻烦。有什么窍门可以让事情变得更简单吗?有哪种PHP框架特别适合这一点

<?php
// First attempt at SQL query. Note that MSSQL_CONNECT is removed in PHP 7; need to use sqlsrv_connect
$serverName = "localhost";
$connectionInfo = array( "Database"=>"somedb", "UID"=>"someid", "PWD"=>"somepassword");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$sql = "SELECT top 10 * from tQandCDownloads order by downloadId desc";

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
echo "<br><br>";

$qry = sqlsrv_query($conn, $sql);
if ($qry === false) {
    die( print_r( sqlsrv_errors(), true));
}

while( $row = sqlsrv_fetch_array( $qry, SQLSRV_FETCH_ASSOC) ) {
    echo $row['downloadId'].", ".$row['fileName'].", ".$row['fileType'].", ".$row['downloadDate']."<br />";
}
//Remove downloadDate from above and results echo out as expected. But leave it in, and nothing echoes out to screen. Datatype is "datetime". Same thing happens with another column of type "date".
sqlsrv_free_stmt( $qry);
?>

好的,是的,看起来datetime对象的“date”属性不是要直接访问的。相反,需要调用正确的方法来获取和显示日期,这看起来像是“format()”方法。将我的while循环更改为以下内容,现在一切都在回响:

while( $row = sqlsrv_fetch_array( $qry, SQLSRV_FETCH_ASSOC) ) {
    echo $row['downloadId'].", ".$row['fileName'].", ".$row['downloadDate']->format('Y-m-d').", ".$row['fileType'].", ".$row['forDate']->format('Y-m-d')."<br />";
}

好的,是的,看起来datetime对象的“date”属性不是要直接访问的。相反,需要调用正确的方法来获取和显示日期,这看起来像是“format()”方法。将我的while循环更改为以下内容,现在一切都在回响:

while( $row = sqlsrv_fetch_array( $qry, SQLSRV_FETCH_ASSOC) ) {
    echo $row['downloadId'].", ".$row['fileName'].", ".$row['downloadDate']->format('Y-m-d').", ".$row['fileType'].", ".$row['forDate']->format('Y-m-d')."<br />";
}

我不知道sql server如何存储日期,也不知道sql驱动程序如何检索日期,但您可以使用var_dump($row['downloadDate']);查看类型和值。对于框架。CE3是一个非常轻巧和简单的框架,对我来说,laravel和Yi2都非常好。var_dump对于我最终尝试做的事情是没有好处的,那就是显示查询结果,就像用户希望在网页上阅读一样。我发现这些列不能被回送,因为它们被视为日期对象而不是字符串。每个日期对象都有一个字符串“date”属性,但我仍然无法回显该属性。我试过使用“$row['forDate']['date']”。如果我不能直接访问该属性,我认为该对象将具有某种“getDateString”函数……我是说var_dump供您调试我不知道sql server如何存储日期或sql驱动程序如何检索它们,但您可以使用var_dump($row['downloadDate']);查看类型和值。对于框架。CE3是一个非常轻巧和简单的框架,对我来说,laravel和Yi2都非常好。var_dump对于我最终尝试做的事情是没有好处的,那就是显示查询结果,就像用户希望在网页上阅读一样。我发现这些列不能被回送,因为它们被视为日期对象而不是字符串。每个日期对象都有一个字符串“date”属性,但我仍然无法回显该属性。我试过使用“$row['forDate']['date']”。如果我不能直接访问属性,我想对象应该有某种“getDateString”函数……我是说var_dump供您调试,很高兴知道其他语言中的cfdump等价物!知道其他语言中的cfdump等价物总是很好的!