Поделиться через


PDOStatement::bindValue

Скачать драйвер PHP

Привязывает значение к именованному заполнителю или заполнителю с вопросительным знаком в инструкции SQL.

Синтаксис

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

Параметры

$parameter: идентификатор параметра (смешанные значения). Для инструкции, использующей именованные заполнители, это имя параметра (:name). Для подготовленной инструкции, использующей синтаксис с вопросительным знаком, это индекс параметра, идущий от единицы.

$value: значение (смешанное) для привязки к параметру.

$data_type: необязательный тип данных (целое число), представленный константой PDO::PARAM_*. Значение по умолчанию — PDO::PARAM_STR.

Возвращаемое значение

Значение TRUE в случае успеха, в противном случае — значение FALSE.

Remarks

Поддержка PDO была добавлена в версии 2.0 Драйверы Microsoft SQL Server для PHP.

Пример параметра

В этом примере показано, что после привязки значения $contact его изменение не приводит к изменению значения, передаваемого в запрос.

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

Примечание

Рекомендуется использовать строки в качестве входных данных при привязке значений к десятичным или числовым столбцам, чтобы обеспечить точность и правильность, поскольку PHP имеет ограниченную точность для чисел с плавающей запятой. То же касается и столбцов bigint, особенно в том случае, если значения выходят за пределы диапазона целых чисел.

Пример входного значения десятичного числа

В этом примере кода показано, как привязать десятичное значение в качестве входного параметра.

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

См. также:

Класс PDOStatement

PDO