在php5升级到php7中发现一个PDOStatement::bindValue参数类型的问题。
问题代码:
$statement->bindValue(2, 'NH', PDO::PARAM_INT);
该代码在php5中竟然能正确执行,在php7中,value被转化成0,导致查询失败。
解决:类型可以不传,使用默认的字符串类型。
查看PDOStatement::bindValue的源码
php5.6
默认是PDO_PARAM_STR类型,当使用PDO_PARAM_INT类型是,有如下判断
php7.2
默认是PDO_PARAM_STR类型,当使用PDO_PARAM_INT类型是,有如下判断