执行PDO查询将绑定参数从整数更改为字符串

Hyd*_*erA 9 php sql pdo

代码示例

$query = $this->db->prepare( $sql );                  // prepare sql
$query->bindParam( 'start', $start, PDO::PARAM_INT ); // bind start
$query->bindParam( 'end', $end, PDO::PARAM_INT );     // bind end
$query->bindParam( 'language', $this->language );     // bind language
$query->bindValue( 'keyword', "%$keyword%" );         // bind keyword

var_dump( $end );
$query->execute();
var_dump( $end );
Run Code Online (Sandbox Code Playgroud)

产量

int 2
string '2' (length=1)
Run Code Online (Sandbox Code Playgroud)

但是......如果我改变了绑定的顺序......

$query = $this->db->prepare( $sql );                  // prepare sql
$query->bindParam( 'language', $this->language );     // bind language
$query->bindValue( 'keyword', "%$keyword%" );         // bind keyword
$query->bindParam( 'start', $start, PDO::PARAM_INT ); // bind start
$query->bindParam( 'end', $end, PDO::PARAM_INT );     // bind end

var_dump( $end );
$query->execute();
var_dump( $end );
Run Code Online (Sandbox Code Playgroud)

产量

int 2
int 2
Run Code Online (Sandbox Code Playgroud)

PHP版本:5.3.8在Windows上

任何人都可以解释为什么会这样吗?

wma*_*but 1

尝试转向模拟来准备语句

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);