PHP PDO :: PDOStatement-> bindParam () beklendiği gibi çalışır?

1 Cevap php

Ben ilk kez PHP PDO dışarı çalışıyorum. Ben PDOStatement-> bindParam () i sql sorgusuna geçmek değerlerin veri türlerini ayarlamak için serin bir yol olacağını düşündüm. Ama her nasılsa benim için çalışmıyor. Örneğin ben bindParam çağrı INT bir değişkenin türünü ayarlayın. Ama yine de ben ona saf dize değerlerini geçmesi bile hata atmak değil. Belki ben yanlış bir şey yapıyorum. İşte kod pasajı ..

$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();

Ben her şeyi doğru yapıyor muyum? Bu parametre test2 için hata atmak gerekiyor değil mi?

1 Cevap

PDO won't throw an exception or raise an error but at best convert the parameter to an integer/long. E.g. in 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);
}

yani PDO_INT gibi bir parametre kayıt oldunuz ama değişken bir Boole PDO uzun bir int / için bool dönüştürür tutar ise.