2017-07-13 94 views
0

在我的网站上,我试图制作倒数计时器。如果我告诉它该列的值并且它在测试php页面上工作,那么该定时器的相同代码将起作用。问题是mktime值没有从mysql数据库中正确读取。但是,如果我把列输出在回声里面,它会输出正常。包含数据的列称为过期。我从mysql加载的其他值在他内部回显,但是在我调用任何连接语句之前,所有连接语句都被创建。我正在使用mysqli_fetch_array来调用这些值。使用PHP从Mysql检索Mktime值

$target = mktime($row['expire']); 
$today = time(); 
$difference = $target-$today; 
$hours = $difference/3600; 
$minutes = ($hours-floor($hours))*60; 
echo('ENDS IN: '.floor($hours).' Hrs '.floor($minutes).' Mins'); 
Yes the document is HTML that it gets included into 

我格式化mysql中的过期列的方式为标准作为HR,分钟,秒,MM,DD,YYYY。该列的实际内容是“21,0,0,7,12,2017”

在此先感谢大卫。

回答

0

问题是,您从$row['expire']的数据库中获取了一个字符串。但是mktime()是一个只有整数的函数。因此,首先你需要一个解决方法来爆炸并将字符串转换为整数,然后才能与mktime()一起使用。

请从您的代码中删除以下行:

$target = mktime($row['expire']); 

试试这个:

$timeparts = array_map('intval', explode(',', $row['expire'])); 
$target = mktime($timeparts[0],$timeparts[1],$timeparts[2],$timeparts[3],$timeparts[4],$timeparts[5]); 

希望它是有益的。但请不要将时间值作为字符串保存在数据库中。阅读手册中的其他可能性。

+0

感谢您的帮助! – GloomyGeese