以下是我的代码:
$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.
然而,当我将第3行改为:
时$updateAct->bindValue("act", $_POST['active'] ? 999 : 0, PDO::PARAM_INT);
然后我只能把它设置为127.这让我更加困惑。
这里发生了什么?
答案 0 :(得分:1)
然后我只能把它设置为127.这让我更加困惑。
在MySQL中,布尔值通常使用TINYINT数据类型定义,其最大值为127.