如何在Wordpress DB中解码预订日期

问题描述

我在wordpress DB中运行了此查询,发现预订日期以某种编码方式存储。

选择post_id,Meta_id,post_title,Meta_key,Meta_value 来自a40443635734677.wp_7n2ncdd4yn_postMeta,a40443635734677.wp_7n2ncdd4yn_posts 其中post_id = ID,post_type ='estate_property' 和Meta_key在(“ property_price”,“ cancellation”,“ booking_dates”, 'prop_featured','min_days_booking')和Meta_key ='booking_dates'和post_id = 248 通过post_id订购; 输出:a:2:{i:1600646400; i:374; i:1600732800; i:374;}

用户界面显示预订日期为2020年9月21日至2020年9月23日。

如何解码来自数据库(a:2:{i:1600646400; i:374; i:1600732800; i:374;})的数据到这些日期?

解决方法

您展示给我们的更大的数字看起来像是自大纪元(1970年1月1日)以来的秒数。您可以使用MySQL的 : 0,2342342341235434 函数将这些纪元值转换为真实的人类可读日期。例如:

FROM_UNIXTIME
,

那是序列化的数据。使用内置于unserialize( your output variable here )中的PHP。您会得到一个数组,因为序列化的数据是一个数组(a:2表示具有两个索引的数组)。

日期为UNIX时间。您可以使用PHP DateTime转换为可读格式。

$output = SELECT post_id,meta_id,post_title,meta_key,meta_value 
FROM a40443635734677.wp_7n2ncdd4yn_postmeta,a40443635734677.wp_7n2ncdd4yn_posts 
where post_id = ID 
and post_type = 'estate_property' 
and meta_key in ('property_price','cancellation','booking_dates','prop_featured','min_days_booking') and meta_key = 'booking_dates' 
and post_id = 248 order by post_id;

// Unserialize the data.
$unserialized = unserialize($output);

// Get the date for each array key. The date is the $key,so you pass that to the php date function.
foreach( $unserialized as $key => $date ) {
  echo date('M-d-Y',$key ) . "\n";
}

这将输出Sept-20-2020Sept-21-2020以及您提供的数据。

,

您可以使用unserialize()将其转换为数组。

$dbdata = 'a:2:{i:1600646400;i:374;i:1600732800;i:374;}';

$dbdata = unserialize($dbdata);

//结果 数组( 1600646400 => 374, 1600732800 => 374, )

然后使用PHP的DateTime转换为人类可读的格式,例如

$returnDate = date('d.m.Y H:i:s',1600646400);

//结果 21.09.2020 02:00:00