我有以下问题 - 我正在编写一个电子商务网站,该网站在一段时间内有促销活动。当时间推移时,促销将其相应的数据库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出了什么问题?
答案 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注入