php - 查询将列值设置为 0,而它应该是 10

标签 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();
    }

如果您需要其他东西,请告诉我,我会尽力提供。但我通过将玩家数量设置为 9 来测试它,然后加入大厅,这将加 1,它应该设置为 10 并且 match_admin_needed 设置为 1,但两者都没有,它实际上将玩家数量重置为 0 ...

最佳答案

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

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

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

当您使用 AND 时,它会比较两侧,然后返回一个 bool 结果,然后将其存储为 0 或 1,而不是更新您的 2 列。

关于php - 查询将列值设置为 0,而它应该是 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481684/

相关文章:

php - 使用 phpunit 测试异常信息

php - Eloquent 模型事件在使用 create 时被保存和创建?

mysql - Mysql 中的表类型?

c++ - 更新 DATETIME 导致 BB10 上的 sqlite 错误

php - 我如何使用 SQL 和 PHP 更新这些表条目?

php - 检测是否已达到最大页数

php - 可能的 MySql 语法问题

mysql - 将一张 table 连接到其他 table

php - 从 laravel 中的表单输入将数据插入 hasone 表

mysql - 将列值从一个表复制到另一个匹配的 ID - SQLite