0

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

它需要说:

如果耐力场大于 0 则 + exp 场,+ 金场,- 耐力场 else 做其他事情

我有添加和删除字段的部分工作。然而,在这个 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 语句中运行查询。

4

2 回答 2

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 变量包含在单引号中。

于 2012-05-28T17:39:12.890 回答
0

也许指定这$stam是一个integer?尝试:

if ((int)$stam >= 1 ){
于 2012-05-28T16:45:33.717 回答