Liaison positionnelle de variables en PDO en PHP
Il est possible de lier les variables à la requête une par une.
Cela se fait à l'aide de la méthode bindValue.
Ensuite, la requête obtenue est exécutée, mais
dans ce cas, rien n'est passé à execute.
Cette liaison permet de préciser le type de la variable, annulant l'encadrement automatique par des guillemets pour les valeurs numériques. Voyons comment cela se fait. Supposons que nous ayons deux variables, une chaîne de caractères et une numérique :
<?php
$name = 'name1';
$age = 25;
?>
Préparons la requête :
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Maintenant, lions les variables à la requête avec
l'aide de la méthode bindValue.
Le premier paramètre de la méthode spécifie
le numéro de la position dans la requête, le second
paramètre - le nom de la variable,
et le troisième indique le type de variable (numérique
ou chaîne de caractères) :
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Exécutons la requête :
<?php
$res->execute();
?>
Regardons le résultat :
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Les variables sont données :
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Obtenez les utilisateurs dont le nom correspond à la valeur de la première ou de la deuxième variable.
Les variables sont données :
<?php
$age1 = 21;
$age2 = 22;
?>
Obtenez les utilisateurs dont l'âge correspond à la valeur de la première ou de la deuxième variable.