分享方式:


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

注意

建議在將值繫結至 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();

另請參閱

PDOStatement 類別

PDO