我发现的唯一类似问题是:Insert php boolean into mysql bit column with Zend_Db但这没有答案。
请看下面的简化测试:
“允许”列类型为 BIT。
'roleID' 列类型是 INT。
“permID”列类型为 INT。
$dbo = new PDO("mysql:dbname=database;host=127.0.0.1", "phpuser", "pass");
$query = $dbo->prepare("INSERT INTO ws_role_perms (allow, roleID, permID)
VALUES (:allow, :roleID, :permID)");
$query->bindValue("allow", true, PDO::PARAM_BOOL);
$query->bindValue("roleID", 1, PDO::PARAM_STR);
$query->bindValue("permID", 2, PDO::PARAM_STR);
if ($query->execute() == false) {
throw new Exception(print_r($query->errorInfo(), true));
}
我收到的错误信息是:
Array (
[0] => 22001
[1] => 1406
[2] => Data too long for column 'allow' at row 1
)
如果我尝试将等效查询直接放入 MySQL,即通过运行查询:INSERT INTO ws_role_perms (allow, roleID, permID) VALUES (true, 1, 2)
我没有问题。
这是 MySQL PDO 驱动程序中的错误,还是只是我?
非常感谢您的帮助。