Php PDO语句失败,出现错误“0”;SQLSTATE[22007]:无效的日期时间格式;

Php PDO语句失败,出现错误“0”;SQLSTATE[22007]:无效的日期时间格式;,php,pdo,Php,Pdo,我有一段代码用于执行准备好的PDO语句: $sql = 'INSERT INTO territories(territory_id,`name`,`inactive`,`createdAt`,`updatedAt`) VALUES(?,?,?,NOW(),NOW())'; $stmt = $pdoPdone->prepare($sql); $params = [$territoryId, $territoryName, $inactive]; var_export($params);

我有一段代码用于执行准备好的PDO语句:

$sql = 'INSERT INTO territories(territory_id,`name`,`inactive`,`createdAt`,`updatedAt`) VALUES(?,?,?,NOW(),NOW())';
$stmt = $pdoPdone->prepare($sql);
$params = [$territoryId, $territoryName, $inactive];

var_export($params);

$stmt->execute($params);
var_export($params)
的输出如下所示:

array (
  0 => '04T80000000TQw1EAG',
  1 => 'SA_106SN03',
  2 => false,
)
但是当我尝试执行代码时,我得到了以下错误:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column 'inactive' at row 1' in /var/sync/sync_bi/sync.php:260
Stack trace:
#0 /var/sync/sync_bi/sync.php(260): PDOStatement->execute(Array)
#1 {main}
  thrown in /var/sync/sync_bi/sync.php on line 260
第260行是
$stmt->execute($params)
,那么有什么问题?为什么PHP或PDO会和非活动列的值混淆

array (
  0 => '04T80000000TQw1EAG',
  1 => 'SA_106SN03',
  2 => false, // this should be an integer and not a boolean
)

使用
0/1
而不是
false/true

inactive
是布尔值而不是整数。Mysql将布尔值存储为1或0的小整数,因此请尝试将
inactive
设置为0。

将NOW()替换为DATE\u格式(NOW(),“%Y-%m-%d%H:%i:%s”)

问题正文中的错误与标题中的错误不匹配