PDO准备好的声明和布尔值

时间:2018-02-13 20:31:28

标签: php mysql 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.

然而,当我将第3行改为:

$updateAct->bindValue("act", $_POST['active'] ? 999 : 0, PDO::PARAM_INT);

然后我只能把它设置为127.这让我更加困惑。

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

  

然后我只能把它设置为127.这让我更加困惑。

在MySQL中,布尔值通常使用TINYINT数据类型定义,其最大值为127.