PHP MySQL查询显示当前时间,而不是从平板电脑的时间

时间:2019-02-01 22:00:54

标签: php mysql

我有一个PHP查询来显示在数据库中插入订单的时间,但我得到的只是当前时间,而不是数据库表上的时间。

public function count_todayorder(){
      $today_date = date("m-d-Y");
      $query="SELECT * FROM set_order_detail WHERE order_placed_date LIKE '%$today_date%'";

      $con=Utility::DB_Connection();
      mysqli_set_charset($con,'utf8');
      $result=mysqli_query($con,$query);
      $count=mysqli_num_rows($result);

      return $count;
}

要显示我正在使用的表格。

<div>
    <b>Ordered date:</b>
    <?php date_default_timezone_set('America/New_York'); 
    echo $today_date = date('g:i:s A - m-d-y '); 
    ?>
</div>

3 个答案:

答案 0 :(得分:1)

似乎您实际上并不是在使用数据库中的日期,而是在不设置时间戳的情况下使用date函数。

这是date()函数的语法:date(format,timestamp);

因此,使用您的代码将是:

date('g:i:s A - m-d-y ', $dateFromDB);

您只需要从数据库中获取日期,并将其添加到date()所在的$dateFromDB函数中即可。

答案 1 :(得分:0)

尝试更改此日期的队友

数据库日期甲酸是YYYY-MM-DD。 因此,您应该像下面那样更改当前日期格式:

$today_date = date("Y-m-d");
 $query='SELECT * FROM set_order_detail WHERE order_placed_date LIKE "%'.$today_date.'%"';

答案 2 :(得分:0)

要解决该问题,您首先需要了解您有2台不同的服务器。在您的情况下,PHP一个用于MySQL,另一个用于数据库。后期服务器将基于time_zone存储的变量存储记录。默认情况下,应将其设置为SYSTEM-如果您对设置不满意。

要检查是否执行以下查询SELECT @@time_zone;。如果是+00:00之类的,则它等于GMT。或者尝试SHOW VARIABLES LIKE 'time_zone';

因此,出于完整性考虑,您应始终依靠SQL server提供的内容。让我们将select语句修改为;

 $query="SELECT * FROM `set_order_detail` WHERE DATE( `order_placed_date` ) = DATE( NOW( ) )";

...并删除根本不需要的$today_date = date("m-d-Y");部分。

  

我假设order_placed_dateDATETIMETIMESTAMP,因为您还没有放置数据集示例。

给出的查询将返回日期格式,默认为'YYYY-MM-DD'。通过PHP函数将其投射到date中将基于PHP server时钟重新评估它,这是不可行的。要获得正确的格式,您需要像这样的

SELECT *, DATE_FORMAT( `order_placed_date`, '%l:%i:%s %p - %c-%e-%y') AS `format` FROM `set_order_detail` WHERE DATE( `order_placed_date` ) = DATE( NOW( ) );
  

请检查MySQL DATE_FORMAT function以获得更多详细信息。

要继续,您的函数(如在注释中编写的@Barmar)将返回匹配的行数,而不是通过查询获取的内容。因此,该函数应该看起来像这样。

// somewhere in your class add this
public function todayOrders( )
{
    $query="SELECT *, DATE_FORMAT( `order_placed_date`, '%l:%i:%s %p - %c-%e-%y') AS `format` FROM `set_order_detail` WHERE DATE( `order_placed_date` ) = DATE( NOW( ) );";

    $con=Utility::DB_Connection();
    mysqli_set_charset($con,'utf8');
    $result=mysqli_query($con,$query);

    if( !is_resource( $result ) )
    {
        return [];
    }

    $rows   = [];

    while( $row = mysqli_fetch_row( $result ) )
    {
        $rows[ ] = $row['format'];
    }

    return $rows;
}
  

注意:如果此方法有误,请不要替换您以前的方法,只需追加此方法即可。我无法测试它的atm。

要得出结论并产生通过模板中的数据库获取的结果集,请尝试以下操作。

<?php $rows = todayOrders( ); ?>
<?php foreach( $rows as $today_date ) : ?>
<div>
  <b>Ordered date:</b> <?php echo $today_date; ?>
</div>

希望有帮助。