我想为我的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");
}
答案 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
这是一个非常聪明的功能,可以识别许多日期时间格式。