检查具体情况

时间:2018-12-19 23:49:24

标签: php sql-server

这是我的以下功能:

function Active()
{
    ............

$num_rows = $db->doQuery('SELECT PremiumDays, PremiumStartTime FROM Premium WHERE AccountID = ?', $_SESSION['AccountID']);
if ($num_rows == -1)
{
$this->Error('ERROR');
$db->getError();
return;
}

$data = $db->doRead();
$data['Status'] = $num_rows == 0 ? '<:SHOW_NO_PREMIUM_STATUS:>' : '<b><font size="2" color="red">Premium is active - <%Days_Remaining%> days remaining.</font></b>';

$replace = array
(
'account_status'        => $data['Status'],
'days_remaining'        => $data['PremiumDays'] - date_create($data['PremiumStartTime'])->diff(date_create())->days
);

$this->content = Template::Load('account-template', $replace);
}

PremiumDays列包含101530等数字。

PremiumStartTime包含日期,格式为2018-12-17 21:13:00

如果没有找到行,它将显示<:SHOW_NO_PREMIUM_STATUS:>,但是,当存在一行但days_remaining0或像{{ 1}},然后再次显示-3

感谢所有帮助。预先感谢!

2 个答案:

答案 0 :(得分:0)

我已经修改了您的查询和代码,希望对您有所帮助

function Active() {

    $num_rows = $db->doQuery('SELECT PremiumDays, PremiumStartTime, (PremiumDays - DATEDIFF(day, SYSDATETIME(), PremiumStartTime)) AS days_remaining FROM Premium WHERE AccountID = ?', $_SESSION['AccountID']);
    if ($num_rows == -1) {
        $this->Error('ERROR');
        $db->getError();
        return;
    }
    $data = $db->doRead();    

    if (empty($data) || $data['days_remaining'] < 0) {
        $account_status = '<:SHOW_NO_PREMIUM_STATUS:>';
        $days_remaining = 0;
    }
    else {
        $account_status = '<b><font size="2" color="red">Premium is active - <%Days_Remaining%> days remaining.</font></b>';
        $days_remaining = $data['days_remaining'];
    }

    $replace = array(
        'account_status' => $account_status,
        'days_remaining' => $days_remaining
    );

    $this->content = Template::Load('account-template', $replace);
}

答案 1 :(得分:0)

您可以在设置days_remaining之前移动$data['Status']的计算(但在确定存在有效数据即$num_rows != 0之后),然后将其用于{{1}的计算中}例如

$data['Status']