【发布时间】:2019-06-11 08:26:29
【问题描述】:
引入phinx作为数据库迁移工具后,我再也无法通过PDO的execute语句使用true和false了。每当我这样做时,我都会收到以下错误:
PHP 警告:PDOStatement::execute(): SQLSTATE[22007]:无效的日期时间格式:1366 不正确的整数值:'' for column 'my_db'.'my_table'.'my_column' at row 1...
我的表具有以下架构(已缩短):
| Field | Type | Null | Key | Default | Extra |
+-------------------------------+--------------+------+-----+---------+----------------+
| my_column | tinyint(1) | NO | | NULL | |
+-------------------------------+--------------+------+-----+---------+----------------+
我正在使用以下代码(短):
$stmt = $this->pdo->prepare("INSERT INTO `$table` (`my_column`) VALUES (:mycolumn)");
$stmt->execute([
'my_column' => false
]);
该列是由迁移脚本创建的:
->addColumn('my_column', 'boolean', [
'null' => false,
'after' => 'another_column',
])
奇怪的是,我通过 phpMyAdmin 在手动 sql 语句中使用 true 和 false 没有问题。
【问题讨论】:
-
顺便说一句,只要确保
$table被正确转义即可。 -
顺便说一下,在创建列时定义默认值