无法让我的逻辑工作在我的if语句中

时间:2012-05-28 16:09:03

标签: php sql database if-statement

我有if语句并且遇到问题。

需要说:

  

如果耐力场大于0然后+ exp场,+金场, - stamina场别别做其他事

我有添加和带走字段部分工作。然而,在这个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){

    }

?>

新问题是,即使$ stam小于1,它仍会在if语句中运行查询。

2 个答案:

答案 0 :(得分: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变量包含在单引号中。

答案 1 :(得分:0)

或许指定$staminteger?尝试:

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