查询是将列值设置为0,应该为10

时间:2015-07-17 17:42:39

标签: php mysql sql-update

我正在创建一个大厅系统,我正在制作它以便获得玩家数量并添加一个,如果它是10,它将执行不同的查询而不是正常查询。问题是,我将其中一个值设置为10并将其设置为0而不是完成查询的其他部分。

代码:

    $new_playercount = $match_playercount + 1;
    if($new_playercount == 10) {
        $query = "UPDATE queue SET match_playercount='".$new_playercount."' AND match_admin_needed='1' WHERE match_id='".$match_id."'";
        try {
            $stmt = $dbConnect->prepare($query);
            $result = $stmt->execute();
        }
        catch(PDOException $ex) {
            die();
        }
        header('Location: view-lobby/index.php?match_id='.$match_id);
        die();
    } else {
        $query = "UPDATE queue SET match_playercount='".$new_playercount."' WHERE match_id='".$match_id."'";
        try {
            $stmt = $dbConnect->prepare($query);
            $result = $stmt->execute();
        }
        catch(PDOException $ex) {
            die();
        }
        header('Location: view-lobby/index.php?match_id='.$match_id);
        die();
    }

告诉我你是否需要别的东西,我会尽力提供。但是我通过将playercount设置为9来测试它,然后加入将添加1的大厅,并且它应该设置为10并且match_admin_needed设置为1,但它不会执行任何操作,并且它实际上将playercount重置为0 ...

1 个答案:

答案 0 :(得分:2)

因为您的第一个查询不正确。

UPDATE queue SET match_playercount='".$new_playercount."' AND match_admin...
                                                          ^

如果您更新了2列,则必须在它们之间使用逗号(,),而不是AND,这会导致比较。

当你使用AND时,它会比较两边,然后返回一个布尔结果,然后存储为0或1,而不是更新你的2列。