Associazione posizionale di variabili in PDO in PHP
È possibile associare variabili alla query una per una.
Questo viene fatto utilizzando il metodo bindValue.
Successivamente la query ottenuta viene eseguita, ma
in questo caso a execute non viene passato nulla.
Questo tipo di associazione consente di specificare con precisione il tipo della variabile, evitando il wrapping automatico tra virgolette per i valori numerici. Vediamo come si fa. Supponiamo di avere due variabili, una stringa e una numerica:
<?php
$name = 'name1';
$age = 25;
?>
Prepariamo la query:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Ora associamo le variabili alla query con
l'aiuto del metodo bindValue.
Nel primo parametro del metodo si specifica
il numero della posizione nella query, nel secondo
parametro - il nome della variabile,
e nel terzo si indica il tipo della variabile (numerico
o stringa):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Eseguiamo la query:
<?php
$res->execute();
?>
Osserviamo il risultato:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Sono date le variabili:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Ottieni gli utenti il cui nome corrisponde al valore della prima o della seconda variabile.
Sono date le variabili:
<?php
$age1 = 21;
$age2 = 22;
?>
Ottieni gli utenti la cui età corrisponde al valore della prima o della seconda variabile.