以下是我的代码:
$updateAct = $db->prepare("UPDATE alarm SET active=:act WHERE user_id = :uid AND id = :aid");
$updateAct->bindValue("aid", $_POST['id'], PDO::PARAM_STR);
$updateAct->bindValue("act", $_POST['active'], PDO::PARAM_BOOL);
$updateAct->bindValue("uid", $_SESSION['login'], PDO::PARAM_INT);
$updateAct->execute();
error_log($_POST['active']);
使用上述代码,我可以将字段active = :act
仅设置为false。我不知道为什么,但是当我用MySQL Workbench检查值时,它总是0。
但是,当我将第三行更改为:
$updateAct->bindValue("act", $_POST['active'] ? 999 : 0, PDO::PARAM_INT);
然后我只能将其设置为127。这使我更加困惑。
这里发生了什么?
然后我只能将其设置为127。这使我更加困惑。
在mysql布尔值中通常使用tinyint数据类型定义,该数据类型的最大值为127。