Positionelle Variablenbindung in PDO in PHP
Man kann Variablen einzeln an die Abfrage binden.
Dies geschieht mit der Methode bindValue.
Anschließend wird die vorbereitete Abfrage ausgeführt, jedoch
in diesem Fall wird an execute nichts übergeben.
Diese Bindungsart ermöglicht es, den Typ der Variable genau anzugeben und hebt die automatische Anführungszeichensetzung für numerische Werte auf. Sehen wir uns an, wie das gemacht wird. Nehmen wir an, wir haben zwei Variablen, eine Zeichenkette und eine numerische:
<?php
$name = 'name1';
$age = 25;
?>
Bereiten wir die Abfrage vor:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Nun binden wir die Variablen mit der Methode bindValue
an die Abfrage.
Im ersten Parameter der Methode wird die
Positionsnummer in der Abfrage angegeben, im zweiten
Parameter der Variablenname,
und im dritten wird der Variablentyp (numerisch
oder Zeichenkette) angegeben:
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Führen wir die Abfrage aus:
<?php
$res->execute();
?>
Sehen wir uns das Ergebnis an:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Gegebene Variablen:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Holen Sie sich die Benutzer, deren Name mit dem Wert der einen oder der anderen Variable übereinstimmt.
Gegebene Variablen:
<?php
$age1 = 21;
$age2 = 22;
?>
Holen Sie sich die Benutzer, deren Alter mit dem Wert des einen oder des anderen Variablen übereinstimmt.