我正在使用此代码来选择和比较来自2个独立MySQLi表的日期和信息。代码应生成"discount_amount"
IF,输入的折扣代码与数据库中的折扣代码相同,或者数据库中的折扣代码设置为"open"
。即使设置了日期并且代码设置为"open"
,如果我手动将discount_amount
输入"open"
,我只会获得"$design_discount_code"
。
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"
并且不是自动输入时,为什么只返回“是”的任何想法?
答案 0 :(得分:1)
您似乎认为or
的优先级高于and
。这是不正确的。您应该使用括号表示or
检查是and
条件之一。像这样:
if(($discount_code == $design_discount_code or $discount_code == 'open') and $date >= $discount_start_date and $date <= $discount_end_date)
另请注意混合英语和/或符号&amp;&amp; / ||不是一个好主意。