在$ conn-> prepare($ sql)之后$ stmt是布尔值

时间:2017-01-16 14:39:21

标签: php mysql sql mysqli

我有一个PHP页面,我使用mysqli。

我做了两个准备好的语句SQL查询。

我的问题是,在第二个查询中,$conn->prepare($sql)返回一个布尔值。

第二次查询:

UPDATE `users` SET `games` = ? WHERE `id` = ?

代码:

$sql = "SELECT games, username, displayname FROM users WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id);
$result = $stmt->execute();

if ($result === FALSE){
    printErrorPage("Something went wrong: " . $conn->error);
    die();
}

$stmt->bind_result($json, $username, $displayname);
$stmt->store_result();

if ($stmt->num_rows == 1){
    $stmt->fetch();
    var_dump($json);
    $games = json_decode($json);
    var_dump($games);
    $games_new = apiUpdate($games);
    if ($games_new != $games){
        $json_new = json_encode($games_new);

        $sql = "UPDATE `users` SET `games` = ? WHERE `id` = ?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("si", json_encode($games_new), $id);
        $result = $stmt->execute();

        if ($result !== TRUE){
            printErrorPage("Something went wrong: " . $conn->error);
            die();
        }
    }
    display($username, $displayname, $games_new);
} else {
    if ($stmt->num_rows == 0){
        header("Location: http://moger.net/gameboard/");
    } else {
        //absolute mindfuck
    }
    die();
}

注意:我认为$conn->prepare($sql)在SQL语法不正确时返回FALSE,但我在this syntax tester上测试了它(替换了准备好的语句)并且它说没关系。

编辑:问题已经结束,所以我要在这里提出答案: 我正在使用的用户不允许使用UPDATE命令。

0 个答案:

没有答案