2013-03-17 47 views
1

我陷入了一個簡單的查詢,我無法弄清楚爲什麼不做我期望它做的事情。我有3個值數據庫這樣設置:
PHP條件下的MySQL查詢

$measure = 'kg'; 
$country_code = 'DE'; 
$weight = '5'; 

WEIGHT_UNIT | COUNTRIES | MAX_WEIGHT | PRICE 
kg   | DE,AT  | 10   | 25.55 
lbs   | DE,AT,CH | 5   | 15.99 

我的PHP查詢看起來是這樣的:

SELECT * 
FROM `article_shipping_options` 
WHERE `weight_unit` = '$measure' 
    AND `countries` LIKE '%$country_code%' 
    AND `max_weight` <= '$weight' 
LIMIT 1; 

我期待的結果與25.55的價格行。

我知道我做錯了這裏鄙視我2天的谷歌搜索...任何幫助,將主要讚賞:)

+0

'var_dump(10 <= 5); //返回false「 – HamZa 2013-03-17 13:02:43

+0

然後查詢的結果是什麼? – Amir 2013-03-17 13:11:20

+0

如果您打算使用它查詢,請勿將逗號分隔值存儲在單個數據庫列中。 – 2013-03-17 13:12:08

回答

1

你的意思是MAX_WEIGHT >= $weight

+0

是的,我已經嘗試過......仍然沒有成功...... – Jay 2013-03-17 13:12:33

+0

但如果運營商有這個問題,這將是一個解決方案。 – mavili 2013-03-17 13:19:48

+0

解決方案:那麼你可能已經將max_weight字段定義爲數字字段,在這種情況下,您應該刪除$ weight變量的引號? - 由馬維利在亞光崗位。 – Jay 2013-03-17 13:30:48

0

嘗試使用FIND_IN_SET()和使用max_weight >= '$weight'

SELECT * 
FROM article_shipping_options 
WHERE weight_unit='$measure' AND 
     FIND_IN_SET($country_code, countries) > 0 AND 
     max_weight >= '$weight' 
LIMIT 1; 
+0

感謝您的快速回復,我很感激!不幸的是,FIND_INT_SET和我的查詢做的事情是一樣的。我認爲問題在於運營商部分。 – Jay 2013-03-17 13:05:22

+0

是的,我做了...仍然沒有正確的結果... – Jay 2013-03-17 13:11:29

1

我認爲你有錯不等於運算符。不應該是max_weight >= '$weight'

+0

感謝您的回覆!是的,我也試過,沒有成功。這個事情讓我瘋狂:D過去我使用過很多操作符,但這是我第一次陷入這種困境。 – Jay 2013-03-17 13:08:06

0

你必須$weight設置爲5,但在該行的MAX_HEIGHT是10

則該行的最後一個條件的值爲10 <= 5。由於條件未滿足,該行未返回。

+0

是的,我已經太......沒有成功,到目前爲止:( – Jay 2013-03-17 13:09:31

+0

,那麼你可能已經定義了'max_weight'領域爲數字領域在這種情況下,你應該刪除周圍的引號嘗試了' ?!$ weight'變量 – mavili 2013-03-17 13:14:33

+0

BINGO太感謝你了,我不能相信我做這種愚蠢的錯誤我已經付出了我週日的一半,但多虧了你,我現在可以休息一下 – Jay 2013-03-17 13:19:08