bindValue, bindParam, PDO::PARAM_INT
Bonjour à tous,
tout d'abord, voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
if(isset($_POST['submittaux'])) // Enregistrement des MU dans la bdd
{
$modif = $bdd->prepare('UPDATE taux SET auction_rate= :auction, buy_rate= :buy, date_rate=now() WHERE objet = :id');
$insert = $bdd->prepare('INSERT INTO taux SET objet = :id, auction_rate= :auction, buy_rate= :buy');
$i=0;
while(isset($_POST['auction'.$i]))
{
if($_POST['auction'.$i]>0)
{
$id = $_POST['id'.$i];
$buy = $_POST['buy'.$i] * 100;
$auction = $_POST['auction'.$i] * 100;
$exist = $bdd->query('SELECT COUNT(*) FROM taux WHERE objet = '.$id)->fetchColumn();
if($exist)
{
try
{
$modif->bindParam(':id', $id, PDO::PARAM_INT);
$modif->bindParam(':buy', $buy, PDO::PARAM_INT);
$modif->bindParam(':auction', $auction, PDO::PARAM_INT);
$modif->execute();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage().'<br />Code : '.$e->getCode());
}
}
else
{
try
{
$insert->bindParam(':id', $id, PDO::PARAM_INT);
$insert->bindParam(':buy', $buy, PDO::PARAM_INT);
$insert->bindParam(':auction', $auction, PDO::PARAM_INT);
$insert->execute();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage().'<br />Code : '.$e->getCode());
}
}
}
$i++;
}
header('Location: index.php');
} |
en utilisant PDO:: PARAM_INT je pensais ajouter une sécurité n'autorisant pas de valeur autre que (INT), mais en fait la valeur est quand même intégrée à la BDD. le cham de la table etant un INt je me retrouve avec un 0.
les validations de données se font seulement en amont de bindParam?
et pour finir, quel est la difference entre bindParam et bindValue?
merci pour vos reponses :)