簡體   English   中英

MySQL sql忽略WHERE條件

[英]MySQL sql ignoring WHERE condition

我遇到以下問題-我正在編碼一個電子商務網站,該網站在一定時間內有促銷活動。 升級后,升級將其對應的數據庫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在哪里出問題?

您必須添加方括號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注入的准備好的語句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM