私が見つけた唯一の同様の質問は次のとおりです。Zend_Dbを使用してphpブール値をmysqlビット列に挿入しますが、これには答えがありません。
以下の簡略化されたテストを参照してください。
'allow'列タイプは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)
と、問題はありません。
これはMySQLPDOドライバーのバグですか、それとも私だけですか?
あなたの助けを期待して感謝します。