我正在使用以下代码向用户展示广告。一旦任何用户单击了一个添加,它就不会在24小时内出现在同一用户身上。

$sql2=$Db1->query("SELECT * FROM ads2 WHERE active='1' ORDER BY RAND()");

while($temp=$Db1->fetch_array($sql2)) {

    $sql=$Db1->query("SELECT * FROM ads2_log WHERE user='$username' AND target='{
         $temp['target']}' AND shorten='{$temp['shorten']}' ORDER BY fecha DESC");
    $row=$Db1->fetch_array($sql);
    $showads = true;

    if( $row['fecha'] != "" ){

        $hourdiff = round(($row['fecha'] - time())/3600, 1);
        //echo "Last click: ".date("Y/m/d H:i:s", $row['fecha'])." - ".$hourdiff;
        if( $hourdiff < 24 ) { $showads = false; }

    }
    if( $showads == true )
    {


但就我而言,它对我不起作用。

最佳答案

假设fecha引用的数据库列包含以下格式的DATETIME字符序列(MySQL使用):YYYY-MM-DD hh:mm:ss。在这种情况下,您可以通过以下方式计算当前时间与数据库中存储的时间之间的时差:

$hourdiff = round( (time()-strtotime($row['fecha']))/3600, 1);


自Unix纪元(time())开始以来,PHP January 1 1970 00:00:00 UTC函数返回毫秒数,因此您需要使用strtotime将数据库中的日期字符串转换为毫秒数。之后,您就可以计算出差异了。

08-04 05:16