MYSQL时间戳添加日期\格式时输出为空,PHP冲突?

MYSQL时间戳添加日期\格式时输出为空,PHP冲突?,php,mysql,wordpress,Php,Mysql,Wordpress,使用下面的shortcode函数,我让代码通过查询数据库来构建一个表。一切正常。但是,当我向TimeStamp列添加任何类型的格式时,例如DATE\u格式或TIME,该列的输出只会变为空白。控制台中没有要查看的错误。我试图只提取时间,并将其设置为12小时格式,而不是24小时设置中日期和时间的典型时间戳格式 是否与某些PHP冲突导致它不显示时间戳 function test2() { global $wpdb; $results = $wpdb->get_resul

使用下面的shortcode函数,我让代码通过查询数据库来构建一个表。一切正常。但是,当我向
TimeStamp
列添加任何类型的格式时,例如DATE\u格式或TIME,该列的输出只会变为空白。控制台中没有要查看的错误。我试图只提取时间,并将其设置为12小时格式,而不是24小时设置中日期和时间的典型时间戳格式

是否与某些PHP冲突导致它不显示时间戳

 function test2() {
        global $wpdb;
    $results = $wpdb->get_results("SELECT `name`, `partysize`, `phonenumber`, `emailaddress`, DATE_FORMAT(`Time_stamp`, '%h %i' ), `Wait`, `currentstatus` FROM mytablename m RIGHT JOIN (SELECT wdt_ID, CONCAT(ROUND(Time_to_sec(TIMEDIFF (NOW() ,`Time_stamp`))/60,0), ' Min') AS Wait FROM mytablename) as t on m.wdt_ID = t.wdt_ID WHERE Time_stamp >= date_sub(now(),interval 3 hour)  "); 
        if(!empty($results))
        {
            echo "<table width='100%' border='0' style='display:inline-table'>
            <th>Name</th>
            <th>Party Size</th>
            <th>Phone Number</th>
            <th>Email Address</th>
            <th>Time Stamp</th>
            <th>Status</th>
            <th>Wait</th>
            <th>Action</th>     ";
            echo "<tbody>";      
            foreach($results as $row){ 
                echo "<tr>";
                //echo "<td>" . $row->wdt_ID . "</td>";
                echo "<td>" . $row->name . "</td>";
                echo "<td>" . $row->partysize . "</td>";
                echo "<td>" . $row->phonenumber . "</td>";
                echo "<td>" . $row->emailaddress . "</td>";
                echo "<td>" . $row->Time_stamp . "</td>";
                echo "<td id='tdid_".$row->wdt_ID."'>" . $row->currentstatus . "</td>";
                echo "<td>" . $row->Wait . "</td>";
                echo '<td> <a href="javascript:void(0)" class="button seated-btn" onclick="seatclick('.$row->wdt_ID.')" data-id="'.$row->wdt_ID.'"></a></td>';
                echo "</tr>";
            }
            echo "</tbody>";
            echo "</table>"; 
        }
    }
    add_shortcode('test2', 'test2');
和日期格式(时间戳:

Array
(
    [0] => stdClass Object
        (
            [wdt_ID] => 9
            [name] => test2
            [partysize] => 3
            [phonenumber] => 465
            [emailaddress] => dis@doc.com
            [Time_stamp] => 2020-09-24 19:02:47
            [currentstatus] => Waiting
            [Wait] => 138 Min
        )

)
Array
(
    [0] => stdClass Object
        (
            [DATE_FORMAT(Time_stamp, '%h %i %p')] => 07 02 PM
        )

)

在数据库中,您需要添加一种时间戳UTF8 general_ci。这可能会有所帮助

并显示在数组的变量转储`或打印中显示的内容

特殊代码是

print_r($your_array);

echo';
打印(你的数组);
回声';
是否与某些PHP冲突导致它不显示时间戳

 function test2() {
        global $wpdb;
    $results = $wpdb->get_results("SELECT `name`, `partysize`, `phonenumber`, `emailaddress`, DATE_FORMAT(`Time_stamp`, '%h %i' ), `Wait`, `currentstatus` FROM mytablename m RIGHT JOIN (SELECT wdt_ID, CONCAT(ROUND(Time_to_sec(TIMEDIFF (NOW() ,`Time_stamp`))/60,0), ' Min') AS Wait FROM mytablename) as t on m.wdt_ID = t.wdt_ID WHERE Time_stamp >= date_sub(now(),interval 3 hour)  "); 
        if(!empty($results))
        {
            echo "<table width='100%' border='0' style='display:inline-table'>
            <th>Name</th>
            <th>Party Size</th>
            <th>Phone Number</th>
            <th>Email Address</th>
            <th>Time Stamp</th>
            <th>Status</th>
            <th>Wait</th>
            <th>Action</th>     ";
            echo "<tbody>";      
            foreach($results as $row){ 
                echo "<tr>";
                //echo "<td>" . $row->wdt_ID . "</td>";
                echo "<td>" . $row->name . "</td>";
                echo "<td>" . $row->partysize . "</td>";
                echo "<td>" . $row->phonenumber . "</td>";
                echo "<td>" . $row->emailaddress . "</td>";
                echo "<td>" . $row->Time_stamp . "</td>";
                echo "<td id='tdid_".$row->wdt_ID."'>" . $row->currentstatus . "</td>";
                echo "<td>" . $row->Wait . "</td>";
                echo '<td> <a href="javascript:void(0)" class="button seated-btn" onclick="seatclick('.$row->wdt_ID.')" data-id="'.$row->wdt_ID.'"></a></td>';
                echo "</tr>";
            }
            echo "</tbody>";
            echo "</table>"; 
        }
    }
    add_shortcode('test2', 'test2');
您试图输出什么?
$row->Time\u stamp

现在,您的原始对象具有这样的属性,如调试输出所示:

[DATE_FORMAT(Time_stamp, '%h %i %p')] => 07 02 PM
现在仔细看看你的第二个调试输出,里面现在有什么

$results = $wpdb->get_results("SELECT …, DATE_FORMAT(`Time_stamp`, '%h %i' ) AS Time_stamp, …");
这是一个与以前完全不同的属性名称

现在,虽然您可以尝试通过大括号语法(
$row->{'DATE\u FORMAT(Time\u stamp,'%h%i%p')')}
)访问该列,但通过在查询中指定别名,在结果集中为该列指定一个不同的名称更有意义:

使用该别名,您将能够再次以
$row->Time\u stamp
的形式访问该值

控制台中没有要查看的错误

浏览器控制台显示客户端错误,但您的错误在服务器端


您应该启用正确的PHP错误报告-在这种情况下,PHP会告诉您,您正在尝试访问一个不存在的对象属性。有关详细信息,请参阅。

Time\u stamp
的数据类型是什么?@GMB它是一个类型-timestamp,因为它的默认值是CURRENT\u timestamp谢谢!我很想添加UTF,但因为它是不为null,它将不接受任何排序规则。我正在使用上面的编辑更新打印结果。谢谢。也许我没有解释清楚。我一直试图通过在名为time_stamp的列中添加DATE_格式或time,从time_stamp中仅提取12小时格式的时间。当我在MYSQL查询中添加其中任何一个时,它会清空e再次回归。有趣的是,上面的方法奏效了,但我不清楚为什么?
$results = $wpdb->get_results("SELECT …, DATE_FORMAT(`Time_stamp`, '%h %i' ) AS Time_stamp, …");