在一个项目中,我有以下mysql查询:
INSERT INTO my_table (status) VALUES ('')
其中“status”是tinyint(1)类型。该项目部署在几个不同的服务器上,具有不同的php版本和不同的mysql版本。现在-第一次-我们有一个问题,在一个新的服务器上,上面的查询将导致一个错误
Incorrect integer value: '' for column 'status' at row 1
将查询更改为
INSERT INTO my_table (status) VALUES ('0')
解决问题。然而,遍历整个项目并在任何地方更改这种查询都是一件痛苦的事情。查询是由pdo用
$stmt = $db->prepare("INSERT INTO my_table (status) VALUES (:status)");
$stmt->execute( array( ':status' => false ) );
还是新风格
$stmt->execute( array( ':status' => '0' ) );
有没有什么方法可以告诉pdo在传入false时的行为不同,或者我们可以为db设置任何参数,以便在获取int输入时以不同的方式处理空字符串?任何想法都很好:-)
另外-知道哪个版本的mysql(或pdo?)是第一个可能给我们带来这个问题的版本,这将是非常有趣的?
暂无答案!
目前还没有任何答案,快来回答吧!