2011-04-16 72 views
2
if ($cuser->loggedin()){ 
    if (!empty($_POST['returnto'])) 
    { 
     header("Location: ".htmlspecialchars($_POST['returnto'])); 
    } 
    else 
    { 
     $query = ("SELECT id, username, check FROM users WHERE id=".$CURUSER['id']); 
     $result = do_mysql_query($query); 
     while($row = mysql_fetch_assoc($result)) 
{ 
    if ($row['check'] == true) { 
     echo 'omg'; 
    } else { 
echo 'omg false'; 


    } 
    //To stop script executing next code ant print info... 
    die(); 
} 

    } 

    die(); 
} 

但總是得到:OMG即使我chnage它爲false。有任何想法嗎 ?PHP的MySQL信息檢索

+0

什麼是你的數據庫字段的字段類型? – locrizak 2011-04-16 19:23:19

+0

即使你改變什麼爲「假」? '$行[ '檢查']'? – lonesomeday 2011-04-16 19:23:48

+0

您的餐桌用戶的外觀如何?你在「check」列中存儲什麼?提供更多信息。 – Wh1T3h4Ck5 2011-04-16 19:25:30

回答

1

這始終是TRUE你的情況

if ($row['check'] == true) {...} 

一樣

if ($row['check']) {...} 

檢查一個$row['check']值,而不是...

if ($row['check'] == 'true') {...} 

...如果你有字符串true和/或false作爲值爲check列。

+1

或者'if(!empty($ row ['check'])){// ...}'在這種情況下也應該是罰款。 – AJJ 2011-04-16 19:31:46

+0

@AJweb,正確...謝謝 – Wh1T3h4Ck5 2011-04-16 19:33:49

+0

在列中存儲'true'和'false'當然是低效率和愚蠢的,使用MySQL布爾值並且測試0 = false和!0 = true。總是**存儲** 1爲真。 – Johan 2011-04-16 23:46:01

2

當你得到的結果是mysql_fetch_assoc時,數組中值的類型幾乎總是字符串(它們有時可能是null,但這不是問題)。

如果您將它們與==比較運算符進行比較,則任何非空字符串將評估爲true

返回的實際值不會是true。它可能是一個包含單詞true或單詞false的字符串。然而,與布爾型true相比,這兩種方法都將評估爲true

正是你應該比較反對取決於什麼在你的數據庫...


您的意見建議,現場是一個枚舉。這給你兩個可能的字符串,"true""false"。由於PHP "false" == true是正確的行爲(因爲非空字符串評估爲true),你需要比較反對一個字符串值改爲:

if ($row['check'] == "true") { 
+0

OMG,''false「== true'就是這麼borken(LOL) – Johan 2011-04-16 23:47:51