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?