我發現的唯一類似問題是:Insert php boolean into mysql bit column with Zend_Db但這沒有答案。MySQL PDO錯誤:當爲BIT列傳遞布爾參數時,'數據列太長'
請參閱下面的簡化測試:
'允許'列類型是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驅動程序中的錯誤,還是隻是我?
非常感謝您期待您的幫助。
感謝您的答覆。我試過: '$ query-> bindValue(「allow」,1,PDO :: PARAM_BOOL);' 但是,這仍然失敗。 – 2012-04-09 18:10:43
你使用的是什麼版本的MySQL?特別是,你知道你的字符集嗎? 'SHOW VARIABLES LIKE 「%版本%」 的 – 2012-04-09 18:14:49
結果;' innodb_version \t 1.1.8 PROTOCOL_VERSION slave_type_conversions \t 版本\t 5.5.22 version_comment \t MySQL社區服務器(GPL) version_compile_machine version_compile_os \t Win64 我正在使用'UTF8 - 默認集合'字符集。 – 2012-04-09 18:18:23