PDOStatement::bindValue
Bindet einen Wert an einen benannten Platzhalter oder Fragezeichenplatzhalter in der SQL-Anweisung.
Syntax
bool PDOStatement::bindValue($parameter, $value[, $data_type]);
Parameter
$parameter: Ein (gemischter) Parameterbezeichner. Ein Parametername (:name) für eine Anweisung, die benannte Platzhalter verwendet. Für eine vorbereitete Anweisung mit der Fragezeichensyntax stellt dieser den 1-basierten Index des Parameters dar.
$value: Der (gemischte) Wert, der an den Parameter gebunden wird.
$data_type: Der optionale Datentyp (Integer), der durch die Konstante PDO::PARAM_* dargestellt wird. Der Standardwert ist PDO::PARAM_STR.
Rückgabewert
„true“ bei Erfolg, andernfalls „false“.
Bemerkungen
Unterstützung für PDO wurde in Version 2.0 von Microsoft-Treiber für PHP für SQL Serverhinzugefügt.
Parameterbeispiel
Dieses Beispiel zeigt, dass nachdem der Wert für $contact gebunden wurde, eine Änderung des Werts nicht den in der Abfrage übergebenen Wert ändert.
<?php
$database = "AdventureWorks";
$server = "(local)";
$conn = new PDO("sqlsrv:server=$server ; Database = $database", "", "");
$contact = "Sales Agent";
$stmt = $conn->prepare("select * from Person.ContactType where name = ?");
$stmt->bindValue(1, $contact);
$contact = "Owner";
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print "$row[Name]\n\n";
}
$stmt = null;
$contact = "Sales Agent";
$stmt = $conn->prepare("select * from Person.ContactType where name = :contact");
$stmt->bindValue(':contact', $contact);
$contact = "Owner";
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print "$row[Name]\n\n";
}
?>
Hinweis
Es wird empfohlen, beim Binden von Werten an eine Spalte des Datentyps „decimal“ oder „numeric“ Zeichenfolgen als Eingabe zu verwenden, um Präzision und Genauigkeit sicherzustellen, da die Genauigkeit von PHP für Gleitkommazahlen begrenzt ist. Dasselbe gilt für Spalten des Datentyps „bigint“, insbesondere, wenn die Werte außerhalb des Bereichs einer ganzen Zahl liegen.
Dezimaleingabebeispiel
In diesem Codebeispiel wird das Binden eines Dezimalwerts als Eingabeparameter veranschaulicht.
<?php
$database = "Test";
$server = "(local)";
$conn = new PDO("sqlsrv:server=$server ; Database = $database", "", "");
// Assume TestTable exists with a decimal field
$input = 9223372036854.80000;
$stmt = $conn->prepare("INSERT INTO TestTable (DecimalCol) VALUES (?)");
// by default it is PDO::PARAM_STR, rounding of a large input value may
// occur if PDO::PARAM_INT is specified
$stmt->bindValue(1, $input, PDO::PARAM_STR);
$stmt->execute();