2012-05-28 52 views
0

我有一條if語句並且遇到問題。無法讓我的邏輯在我的if語句中工作

它需要說:

如果後勁場是更大然後0,那麼+ EXP字段,+金礦田, - 耐力場做其他別的事情

我已經添加和帶走部分工作。然而,在這個if語句中它並沒有這樣做,除非我把它放在「做別的事情」部分。然而,當我把它放在if語句的那一段時,它不會停在0。

<?php 

    include '../core/init.php'; 
    $id = $_SESSION['user_id']; 
    $result = mysql_query('SELECT `stamina`FROM `characters` WHERE `id` = "$id"'); 
    $row = mysql_fetch_row($result); 
    $stam = $row[0]; 

    if ($stam > 0) { 
     mysql_query('UPDATE `characters` SET `exp` = `exp` + 1, `gold` = `gold`+10, `stamina`=`stamina`-1 WHERE id = "'.$id.'"'); 
    } else { 

    } 

?> 

我的連接在init.php中是「必需的」,它工作得很好。

我已經嘗試了很多不同的方式來轉動方程。

好吧,現在我已經編輯了這個聲明,現在已經有一半了。那就是:

<?php 

    include '../core/init.php'; 
    $id = $_SESSION['user_id']; 
    $stam = mysql_query('SELECT `stamina` FROM `characters` WHERE `id` = "$id"'); 

    if ($stam >= 1){ 
     mysql_query('UPDATE `characters` SET `exp` = `exp` + 1, `gold` = `gold`+10, `stamina`=`stamina`-1 WHERE id = "'.$id.'"'); 
    } else if ($stam < 1){ 

    } 

?> 

新的問題是,它仍然運行if語句內的查詢即使$斯塔姆比1

+0

你叫'session_start()'嗎? –

+0

嗨,會議已經創建,聲明中的部分工作完美,除非他們在聲明中,所以即時猜測它的要麼是我的變量是錯誤的或我的聲明被錯誤地詢問 – joness123

+0

在mysql_query之後調用echo mysql_error();並且回發 – Gntem

回答

0

較小也許指定$staminteger?嘗試:

if ((int)$stam >= 1){ 
+0

感謝您的這一點,但仍然沒有運氣,仍然低於0,謝謝雖然:) – joness123

+0

嘗試'echo'或'print_r ''stam'並確保它是你的想法,在你的第二個版本中'$ stam'是一個'mysql_query'。如果'$ stam'是1,2或3位數字,你也可以使用'preg_match'而不是'> = 1'返回true,如果'$ stam'是除3位數以外的任何其他數字,則返回false ,像'if(preg_match('/^[1-9] {1} [0-9] {0,2} $ /',$ stam)){' – Overchill

+0

感謝我的代碼重寫了它是什麼和包括所有答案中的一切,現在似乎工作,非常感謝:) – joness123

1

嘗試:

$result = mysql_query('SELECT `stamina` FROM `characters` WHERE `id` = ' . $id); 

if ($result['stamina'] >= 1){ 
mysql_query('UPDATE `characters` SET `exp` = `exp` + 1, `gold` = `gold`+10,      
    `stamina`=`stamina`-1 WHERE id = ' . $id); 
} else if ($result['stamina'] < 1){ 
} 

雖然你應該看看新mysqli_ *功能。 http://php.net/manual/en/book.mysqli.php

編輯: 我剛剛意識到另一個問題。在你的第一個查詢中,你有單引號中包含的$ id變量。

+0

嗨,我想,這可能是我不好的複製對不起,這個代碼什麼也沒做,但是如果我把if語句中的查詢移動到其他部分它運行查詢,但不停止在0,這有點奇怪? – joness123

+0

我懷疑你的耐力值沒有被當作一個整數來讀取。回聲一切,看看錯誤發生在哪裏。例如,$ sql ='SELECT'stamina' FROM'characters' WHERE'id' ='。 $ ID; echo $ sql; $ result = mysql_query($ sql); echo $ result ['stamina']; – Jared

+0

finnaly固定它我正在顯示$ stam作爲一個對象而不是一個整數作爲deathApril說,感謝您的幫助一直非常有用:) – joness123