在将phinx作为数据库迁移工具引入之后,我不再能够通过PDO的execute语句使用true和false。无论何时,我都会得到以下错误:
PHP警告: PDOStatement::execute():SQLSTATE22007:无效的日期时间格式: 1366个不正确的整数值:'‘代表列'my_db'.'my_table'.'my_ column’.
我的表有以下模式(短路):
| 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没有问题。
发布于 2019-06-11 08:38:20
您可以在PDO::PARAM_BOOL中使用PDO
$stmt->bindValue(':myColumn', false, PDO::PARAM_BOOL);发布于 2021-09-13 13:37:58
当我使用macOS时,
我正在用 10构建我的网站,而且运行良好。在使用macOS之后,我不得不将变量更改为1或0
我希望你修好了。
发布于 2019-06-11 08:35:06
解决该问题的一个方法是全局设置sql_mode = ''。
在您的DB中运行此查询并检查它是否修复了该问题:
set GLOBAL sql_mode = "";你可以在这里读到服务器SQL模式
每次重新启动mysql服务器时,您都必须运行该查询。要克服这个问题,您必须在mysql配置中设置它,如果需要,可以查找它。
https://stackoverflow.com/questions/56539471
复制相似问题