PHP 运算符失败

PHP Operator failing

我正在使用此代码 select 并比较来自 2 个单独的 MySQLi 表的日期和信息。如果输入的折扣代码与数据库中的折扣代码相同,或者数据库中的折扣代码设置为 "open",代码应生成 "discount_amount"。然而,即使日期设置和代码设置为 "open",如果我手动输入 "open""$design_discount_code",我只会得到 discount_amount

if($discount_code == $design_discount_code or $discount_code == 'open' && $date >= $discount_start_date && $date <= $discount_end_date){
    $design_price_total = $discount_amount;
    $discount = 'yes';
} else {
    $design_price_total = $original_price;
    $discount = 'no';
}

我也曾尝试将 PHP 运算符更改为 ||xor,但没有更好的结果。关于为什么在我键入 "open" 时它只返回 'yes' 而不是自动返回的任何想法?

检查 andor 的优先级,也许你可以使用括号 () 来指定首先评估哪个。

if( ( $discount_code == $design_discount_code || $discount_code == 'open') && ( $date >= $discount_start_date && $date <= $discount_end_date) )

您似乎假设 or 的优先级高于 and。这是不正确的。您应该使用括号来指示 or 检查是 and 条件之一。像这样:

if(($discount_code == $design_discount_code or $discount_code == 'open') and $date >= $discount_start_date and $date <= $discount_end_date)

另请注意,将英文 and/or 与符号 &&/|| 混合使用这不是一个好主意。