首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO插入不接受"true“或"false",但仅插入0和1

问PDO插入不接受"true“或"false",但仅插入0和1
EN

Stack Overflow用户
提问于 2019-06-11 08:26:29
回答 4查看 1.2K关注 0票数 2

在将phinx作为数据库迁移工具引入之后,我不再能够通过PDO的execute语句使用true和false。无论何时,我都会得到以下错误:

PHP警告: PDOStatement::execute():SQLSTATE22007:无效的日期时间格式: 1366个不正确的整数值:'‘代表列'my_db'.'my_table'.'my_ column’.

我的表有以下模式(短路):

代码语言:javascript
复制
| Field                         | Type         | Null | Key | Default | Extra          |
+-------------------------------+--------------+------+-----+---------+----------------+
| my_column                     | tinyint(1)   | NO   |     | NULL    |                |
+-------------------------------+--------------+------+-----+---------+----------------+

我正在使用以下代码(缩写):

代码语言:javascript
复制
$stmt = $this->pdo->prepare("INSERT INTO `$table` (`my_column`) VALUES (:mycolumn)");
$stmt->execute([
   'my_column' => false
]);

该列是由迁移脚本创建的,具有:

代码语言:javascript
复制
->addColumn('my_column', 'boolean', [
  'null' => false,
  'after' => 'another_column',
])

奇怪的是,通过phpMyAdmin在手动sql语句中使用true和false没有问题。

EN

回答 4

Stack Overflow用户

发布于 2019-06-11 08:38:20

您可以在PDO::PARAM_BOOL中使用PDO

代码语言:javascript
复制
$stmt->bindValue(':myColumn', false, PDO::PARAM_BOOL);
票数 2
EN

Stack Overflow用户

发布于 2021-09-13 13:37:58

当我使用macOS时,

我正在用 10构建我的网站,而且运行良好。在使用macOS之后,我不得不将变量更改为1或0

我希望你修好了。

票数 0
EN

Stack Overflow用户

发布于 2019-06-11 08:35:06

解决该问题的一个方法是全局设置sql_mode = ''。

在您的DB中运行此查询并检查它是否修复了该问题:

代码语言:javascript
复制
set GLOBAL sql_mode = "";

你可以在这里读到服务器SQL模式

每次重新启动mysql服务器时,您都必须运行该查询。要克服这个问题,您必须在mysql配置中设置它,如果需要,可以查找它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56539471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档