PDOStatement::bindValue
将某个值绑定到 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
$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();