2011-07-09 13 views
-1

私のmysqlデータベースから変数を読み込み、その変数に基づいて数値をエコーするif文がいくつかあります。何らかの理由で、以下のコードは「1」をエコーし​​てしまい、理由はわかりません。if文の比較整数

//connect to database and assign $x a int from database 
if ($x<=100){ 
echo 1; 
} 

if ($x>=500 && $x<1000){ 
echo 2; 
} 

if ($x>=1000 && $x<2500){ 
echo 3; 
} 

if ($x>=2500 && $x<5000){ 
echo 4; 
    } 

if ($x>=5000 && $x<7500){ 
echo 5; 
} 

if ($x>=7500 && $x<100000){ 
    echo 6; 
} 

if ($x>=10000){ 
echo 7; 
} 

EDIT:

CODE($ xは670ですが、それはまだ1をエコー表示)私はDBに接続して自分のコードで愚かな何かをしました。とにかく助けてくれてありがとう。それは有り難いです。

+0

が、これは実際にはPHPですか? –

+0

@ p.campbell yes sorrry – user780483

+0

データベースからではなく、 '$ x'に手動で' 670'を割り当ててみましたか?試してみてください。 – dpp

答えて

1

期待している値ではないようです(int値670)。

  1. 以下100未満?はい:エコー1です。これは実際に値がで、670のint値ではないことを示しています。
  2. これらの条件に合格しないため、残りはブールテストに失敗します。

    echo $x; 
    

    おそらく、明示的にMySQLへのお電話から出てくるの後に/として、その値をキャスト::、トラブルシューティングを試してみ

$x = (int)$x; 
+0

xは670として2を返すべきです。670は100以上でなければなりません – user780483

+0

@user:あなたは私が言っていたことの要点を持っています。 $ xには670のint値がありません。ハードコーディングされたint値が670であることが証明されました。dbコールが文字列などを返す可能性があります。 –

+0

しかし、私がそれをエコーアウトすると、それはありません。私もtrim()を試してみました。 – user780483

-1

これは確かにPHPの場合は、$ xは必ず670ではありません。

See example here

あなたはあなたがDBからxを読むコードを提供しますか?

-1

これを試してみてください:

$x = $x + 0.0; 

    if ($x<=100){ 
    echo 1; 
    } 

    if ($x>=500 && $x<1000){ 
    echo 2; 
    } 

    if ($x>=1000 && $x<2500){ 
    echo 3; 
    } 

    if ($x>=2500 && $x<5000){ 
    echo 4; 
     } 

    if ($x>=5000 && $x<7500){ 
    echo 5; 
    } 

    if ($x>=7500 && $x<100000){ 
     echo 6; 
    } 

    if ($x>=10000){ 
    echo 7; 
    }