PDOStatement::bindValue

Ladda ned PHP-drivrutin

Binder ett värde till en namngiven eller frågeteckensplaceholder i SQL-satsen.

Syntax

  
bool PDOStatement::bindValue($parameter, $value[, $data_type]);  

Parameters

$ parameter: En (blandad) parameteridentifierare. För ett uttalande som använder namngivna platshållare, använd ett parameternamn (:name). För ett förberetts påstående med frågeteckensyntax är det det 1-baserade indexet för parametern.

$ värde: Det (blandade) värdet som binds till parametern.

$ data_type: Den valfria (heltals)datatypen representerad av en PDO::P ARAM_*-konstant. Standardinställningen är PDO::P ARAM_STR.

Returvärde

SANT om framgång, annars FEL.

Remarks

Stöd för PDO lades till i version 2.0 av Microsoft Drivers för PHP för SQL Server.

Parameterexempel

Detta exempel visar att efter att värdet av $contact är bundet, ändrar inte ett värde som skickas i frågan.

<?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";  
}  
?>  

Note

Det rekommenderas att använda strängar som indata när man binder värden till en decimal- eller numerisk kolumn för att säkerställa precision och noggrannhet, eftersom PHP har begränsad precision för flyttalstal. Samma gäller för bigintkolumner, särskilt när värdena ligger utanför intervallet för ett heltal.

Decimalinmatningsexempel

Detta kodexempel visar hur man binder ett decimalt värde som en indataparameter.

<?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();