php
  • mysql
  • 2011-08-30 148 views 1 likes 
    1

    我正在編程一個隨機事件系統,發生在用戶登錄時,我把下面的一段代碼放到我的包含文件中。爲什麼我的if語句會忽略我的條件?

    $tehchance = mt_rand(1,15); 
    if ($tehchance == "1"){ 
    $thewin = 10; 
    mysql_query("UPDATE members SET Points = Points + $thewin WHERE Handle = '$members[Handle]'"); 
    } 
    

    我也有這個另一事件:

    if ($tehchance == "2"){ 
    $thekhwin = 5; 
    $thexpwin = 10; 
    mysql_query("UPDATE members SET Points = Points - $thekhwin WHERE Handle = '$members[Handle]'"); 
    mysql_query("UPDATE members SET XP = XP + $thexpwin WHERE Handle = '$members[Handle]'"); 
    } 
    

    的代碼將工作,但有時當$ tehchance大於或者等於1或2別的東西等,這將不理會我的條件,更新成員表而不滿足if語句。從測試中,它會隨機添加點或減去點。我從$ tehchance打印了隨機數,即使它不等於1或2,它仍然會添加點。然後有時對成員表不做任何操作。真的很困惑。

    任何想法?

    +0

    首先,您將隨機生成的整數與字符串值進行比較。 – js1568

    +0

    ...然後有可能是別的錯誤。 – 2011-08-30 18:33:01

    +2

    在你的條件塊中添加一個調試回聲,比如'if($ tehchance == 2){echo'it is 2';/*其餘代碼... * /}'。更可能的是,您不止一次修改'$ tehchance',不止一次運行您的腳本,或者在其他地方進行無關更新。 – erisco

    回答

    1

    嘗試使用一個if-then-else和調試這一點。

    $tehchance = mt_rand(1,15); 
    
    if ($tehchance === 1){ 
        echo 'doing 1'; 
        $thewin = 10; 
        mysql_query("UPDATE members SET Points = Points + $thewin WHERE Handle = '$members[Handle]'"); 
    } else if ($tehchance === 2){ 
        echo 'doing 2'; 
        $thekhwin = 5; 
        $thexpwin = 10; 
        mysql_query("UPDATE members SET Points = Points - $thekhwin WHERE Handle = '$members[Handle]'"); 
        mysql_query("UPDATE members SET XP = XP + $thexpwin WHERE Handle = '$members[Handle]'"); 
    } else { 
        echo 'doing nothing'; 
    } 
    
    +0

    好了之後,成員表STILL更新時,它說什麼都不做。有時它不會像它應該做的那樣,然後其他時候它會增加點數。 – Brad45

    +0

    聽起來像你有執行其他地方相同的代碼。它不應該輸出「無所事事」並運行其他語句。 –

    +0

    就是這樣,這是我包含的唯一一種代碼。這不是別的地方。我有更新成員表的成就功能,但它們與添加點或XP無關。正在發生的變化是Points和XP。有時它會在無所事事的時候隨機增加10分。有時會減去5分並添加10個XP。這就像if語句在他們想要的時候才起作用。 – Brad45

    0

    ,因爲你是在比較字符串:「1」,而不是數字1(不帶引號)

    +3

    雖然比較數字會更好,但PHP會強制這些值很好。 '1 ==「1」'爲真,'1 ==「2」'爲假。 (雖然這些都是簡單的例子,但有一些...有趣的轉換選擇。) – 2011-08-30 18:33:44

    +0

    我只是將它更改爲不帶引號的數字,它仍具有相同的行爲。 – Brad45

    +0

    這是一個有效的查詢嗎?點數=積分+ $積分 您是否需要首先執行「選擇點」查詢以獲取這些值,然後執行UPDATE以添加值,而不是將它們內聯添加到原始UPDATE查詢中? – Fil

    相關問題