我有一个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>
答案 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_date
是DATETIME
或TIMESTAMP
,因为您还没有放置数据集示例。
给出的查询将返回日期格式,默认为'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>
希望有帮助。