在PHP做了PDO :: PDOStatement-> bindParam()的工作,因为它是预期?

StackOverflow https://stackoverflow.com/questions/1445540

  •  22-07-2019
  •  | 
  •  

我想了PDO在PHP中的第一次。我认为PDOStatement-> bindParam()将设置我通过到SQL查询中值的数据类型一个很酷的方式。但不知何故,它不为我工作。例如我设置一个变量的类型bindParam呼叫到INT。但它仍然犯规罚球错误甚至当我通过纯粹的字符串值给它。也许我做错了什么。下面是代码的片断..

$query = "select * from PDO_TABLE where A_COLUMN = :test1 or B_COLUMN = :test2";

$test1 = '0';
$test2 = 'a';
$preparedStatement = $conn->prepare($query);

echo $preparedStatement->bindParam(':test1', $test1, PDO::PARAM_INT);
echo $preparedStatement->bindParam(':test2', $test2, PDO::PARAM_INT);

$preparedStatement->execute();

我做的一切正常吗?心不是这应该抛出错误对于参数TEST2?

有帮助吗?

解决方案

PDO不会抛出异常或引发错误但在最好的参数转换为整数/长。 例如。在pdo_stmt.c:

if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && Z_TYPE_P(param->parameter) == IS_BOOL) {
  convert_to_long(param->parameter);
}

即。如果已注册的参数作为PDO_INT但变量持有一个布尔PDO的布尔转换为int /长。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top