I'm wondering what the declaration of the data type in bindParam() (or bindValue() ) is used for...

I mean, I thought that if I define an integer argument ( PDO::PARAM_INT ), the argument must be converted to an integer, something like

$delete->bindParam(1, $kill, PDO::PARAM_INT); // should work like $delete->bindParam(1, (int)$kill);

or at least throw an error if the argument is not of the declared type. But this is not the case.

Googling around, I found that in the php.net archive:

Hi all, I am currently working on PDO. Exactly on the bindParam() function. The third parameter data_type seems to be here to force the type of the value ? But when I try : $sql = "INSERT INTO produit (idproduit, nom, marque) VALUES (NULL, :nom, :marque)"; $stmt = $dbh->prepare($sql); $nom = 'Testarossa'; $marque = 'Ferrari' ; $stmt->BindValue(':marque',$marque) ; $stmt->BindParam(':nom',$nom,PDO::PARAM_INT) ; $stmt->execute(); $nom = '250 GTO' ; $stmt->execute(); ?> I was expecting to have either a PHP error or an interger in my database. But in my DB I have : 22 Testarossa Ferrari 23 250 GTO Ferrari It mean that it didn't change if I have the third parameter or not. Or perhaps I miss something. Can someone tole me more ? Or just can someone told me where I can find information about it. Regards, Cyruss

That is exactly my situation. Where are my thoughts going wrong?