带有变量类型的PHP PDO绑定跳闸

带有变量类型的PHP PDO绑定跳闸,php,pdo,Php,Pdo,我有一个PDO连接(持久),我正在进行如下查询: $sql=$pdo->prepare("SELECT * FROM table WHERE myindex=:PDO_myIndex"); $sql->bindParam(':PDO_myIndex', $myIndex); $sql->execute(); 问题是$myIndex在bindParam之前为INT(用var_dump确认),然后在bindParam之后(在执行之前)变为STRING 这是正常行为还是已知行为?您

我有一个PDO连接(持久),我正在进行如下查询:

$sql=$pdo->prepare("SELECT * FROM table WHERE myindex=:PDO_myIndex");
$sql->bindParam(':PDO_myIndex', $myIndex);
$sql->execute();
问题是$myIndex在bindParam之前为INT(用var_dump确认),然后在bindParam之后(在执行之前)变为STRING


这是正常行为还是已知行为?

您可以使用第三个可用参数明确指定

$sql->bindParam(':PDO_myIndex', $myIndex, PDO::PARAM_INT);
                                          ^

您可以使用第三个可用参数显式指定

$sql->bindParam(':PDO_myIndex', $myIndex, PDO::PARAM_INT);
                                          ^

是这是一个问题,请检查手册


第三个参数代表-您可以使用该参数。

是的,这是一个问题,请检查手册


第三个参数代表-您可以使用该参数。

这对您的应用程序有何影响?这是我下一次将某个变量作为int处理时,您的意思是变量
$myIndex
本身会转换为字符串吗?请按照Hanky的答案,如果它仍然是字符串,请将其转换为类似
$myIndex=(int)的int$myIndex
左右。是的,它将自身转换为:)已解决!感谢Hanky这对您的应用程序有何影响?这是我下一次将此变量作为int来处理的时候了。您是说变量
$myIndex
本身会转换为字符串吗?按照Hanky的回答,如果它仍然是字符串,只需将其转换为int,就像这样
$myIndex=(int)$myIndex
这样。是的,它转换自己:)它被解决了!谢谢你,谢谢!它的工作,我需要更新整个项目现在:)谢谢!它的工作,我需要更新整个项目现在:)谢谢