[英]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.