MySQL sql忽略WHERE条件

时间:2017-05-18 14:36:43

标签: mysql sql database where

我有以下问题 - 我正在编写一个电子商务网站,该网站在一段时间内有促销活动。当时间推移时,促销将其相应的数据库active值更改为0.当我检查促销时,第一个条件是active=1,但在某些情况下,MySQL忽略它。

这是我最近一个问题的一个例子:

    $productPromotion = $db->getResults('*', TABLE_PROMO, "active = '1' 
AND (discount_subject = 'all_orders' 
OR discount_subject_product = ".$values['product']['id'].") 
OR (discount_subject = 'category' 
AND discount_subject_category = ".$categoryId[0] . ") ORDER BY id ASC");

$db->getResult是一个自定义函数,它有3个参数 - What,Table和Where。

问题是它正在返回已经过期并且有效= 0的促销。我的sql出了什么问题?

1 个答案:

答案 0 :(得分:1)

您必须添加or

括号
 $productPromotion = $db->getResults('*', TABLE_PROMO, "active = '1' 
      AND 
     ((discount_subject = 'all_orders' OR discount_subject_product = ".$values['product']['id'].")
        OR (discount_subject = 'category' AND discount_subject_category     = ".$categoryId[0] . ")) ORDER BY id ASC");

还要了解准备好的语句以防止SQL注入