如何将日期时间值从mysql导出到php

时间:2016-07-25 16:46:31

标签: php mysql datetime

我想为我的ecomm网站做一些促销代码功能。 目前我有一个名为$ currentDate的变量,我不确定格式是否正确。

$currentDate = date("Y-M-D") 

我想将其与我的数据库中名为expiryDate的日期进行比较。在我的数据库中,我有一行promoCode = GSS2016(varchar),折扣= 0.1(双倍,假设代表10%折扣)和expiryDate = 2016-07-28(如果我没错,日期时间是YMD ... 。)我已经运行了一个查询来检查是否存在promocode,但我不确定如何将它导出到PHP并将其与当前日期进行比较

$currentDate = date("Y-M-D");

session_start();

$conn = mysqli_connect("localhost", "root", "","websiteDb");

$promoCodeInput = $_POST['promoCode'];

$sql = "SELECT * FROM promocodedb WHERE promoCode = '$promoCodeInput'";

$codeChecker = mysqli_query($conn, $sql) or die (mysqli_error($conn));

if (mysqli_num_rows($codeChecker) > 0)
{
    $fetchDiscount = mysqli_fetch_assoc($codeChecker);

    $expiry = $fetchDiscount['expiryDate'];

    if ($expiry > $currentDate)
    {
        $discountPercentage = $fetchDiscount['discount'];
        echo $discountPercentage;

        $cookie_value = $discountPercentage;
        setcookie("discount", $cookie_value, time() + (60 * 60)); //discount last for 1 hour

        header("Location:cart.php?status=promoApplied");
    }
    else
    {
        //header("Location:cart.php?status=promoExpired");  
    }
}
else
{
    header("Location:cart.php?status=promoFail");   
}

2 个答案:

答案 0 :(得分:0)

Y-M-D生成一个类似2016-Jul-25的字符串。你不能将它可靠地与另一个字符串进行比较,甚至是mysql日期/时间格式化字符串,它将是2016-07-25

比较数字/日期时,字符串比较规则永远不会正常工作:

php > var_dump('2016-Jul-25' > '2016-07-25');
bool(true)
php > var_dump('2016-Jul-25' == '2016-07-25');
bool(false)

即使这两个版本代表相同的日期,您也可以看到比较错误。根据字符串规则,它们相同的日期。

同样,请注意这一个:

php > var_dump('2016-Jul-25' > '2016-Mar-25');
bool(false)

真正的人工解析标准,因为7月份比3月晚些,但字符串比较标准为FALSE,因为J字母表中的M早于Jul,因此Mar }版本比{{1}}版本更早/更早。

答案 1 :(得分:0)

您可以将所有日期时间转换为Unix时间戳,并将它们之间的时间戳作为时间戳进行比较。 Unix时间戳是自1970年1月1日以来的秒数。

将日期时间转换为Unix时间戳的功能是strtotime

这是一个非常聪明的功能,可以识别许多日期时间格式。

查看PHP strtotime