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";
}
?>
注意
建議在將值繫結至 decimal 或 numeric 資料行時使用字串作為輸入,以確保精確度與正確性,因為 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();