Positionele binding van variabelen in PDO in PHP
Je kunt variabelen een voor een aan de query binden.
Dit wordt gedaan met de methode bindValue.
Vervolgens wordt de verkregen query uitgevoerd, maar
in dit geval wordt er niets doorgegeven aan execute.
Deze binding maakt het mogelijk om het type variabele exact aan te geven, waardoor automatisch aanhalingstekens plaatsen voor numerieke waarden wordt opgeheven. Laten we eens kijken hoe dit wordt gedaan. Stel dat we twee variabelen hebben, een string en een numerieke:
<?php
$name = 'name1';
$age = 25;
?>
Laten we de query voorbereiden:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Laten we nu de variabelen aan de query binden met
behulp van de methode bindValue.
In de eerste parameter van de methode wordt
de positienummer in de query aangegeven, in de tweede
parameter - de naam van de variabele,
en in de derde wordt het type variabele (numeriek
of string) aangegeven:
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Laten we de query uitvoeren:
<?php
$res->execute();
?>
Laten we naar het resultaat kijken:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Gegeven variabelen:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Verkrijg gebruikers waarvan de naam overeenkomt met de waarde van de eerste of tweede variabele.
Gegeven variabelen:
<?php
$age1 = 21;
$age2 = 22;
?>
Verkrijg gebruikers waarvan de leeftijd overeenkomt met de waarde van de eerste of tweede variabele.