2015-10-24 35 views
0

我有这样一段代码用于执行准备的PDO语句:PDO声明失败,错误“SQLSTATE [22007]:无效日期时间格式”

$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 

其中线26 0是$stmt->execute($params),那么错在哪里?为什么PHP或PDO与无效列的值混淆?

+0

问题正文中的错误与标题中的错误不符 – FuzzyTree

回答

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

使用0/1,而不是false/true

1

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

0

用DATE_FORMAT(NOW(),'%​​Y-%m-%d%H:%i: %s')

相关问题