PDO准备了陈述和布尔人



以下是我的代码:

$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。

最新更新