PDOStatement::bindValue

下载 PHP 驱动程序

将某个值绑定到 SQL 语句中的命名占位符或问号占位符。

语法

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

参数

$parameter:(混合)参数标识符。 对于使用命名占位符的语句,使用参数名 (:name)。 对于使用问号语法的已准备的语句,为基于 1 的参数索引。

$value:要绑定到参数的(混合)值

$data_type:由 PDO::PARAM_* 常量表示的可选(整数)数据类型。 默认值为 PDO::PARAM_STR。

返回值

如果成功,则为 TRUE;否则为 FALSE。

注解

已在 Microsoft Drivers for PHP for SQL Server的版本 2.0 中添加了对 PDO 的支持。

参数示例

本示例显示,在绑定 $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