在PHP中,PDO::PDO语句->;bindParam()是否按预期工作?

在PHP中,PDO::PDO语句->;bindParam()是否按预期工作?,php,pdo,Php,Pdo,我第一次在PHP中尝试PDO。我认为PDOStatement->bindParam()是设置传入sql查询的值的数据类型的一种很酷的方法。但不知怎么的,它对我不起作用。例如,我在bindParam调用中将变量的类型设置为INT。但即使我将纯字符串值传递给它,它也不会抛出错误。也许我做错了什么。下面是代码片段 $query = "select * from PDO_TABLE where A_COLUMN = :test1 or B_COLUMN = :test2"; $test1 = '0';

我第一次在PHP中尝试PDO。我认为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);
}

i、 e.如果您已将参数注册为PDO_INT,但该变量包含布尔值,则PDO会将布尔值转换为INT/long。

ohh..k。i、 e.我可以知道问题变量的值最终传递给查询吗?