PDOStatement::bindParam

PHP sürücüsünü indirme

SQL ifadesinde adlandırılmış veya soru işareti bir yer tutucuya bir parametre bağlar.

Syntax

  
bool PDOStatement::bindParam($parameter, &$variable[, $data_type[, $length[, $driver_options]]]);  

Parametreler

$ parametre: (karışık) bir parametre tanımlayıcısı. Adlandırılmış yer tutucular kullanan bir ifade için, bir parametre adı (:name) kullanın. Soru işareti sözdizimi kullanılarak hazırlanmış bir ifade için, parametrenin 1 tabanlı indeksidir.

&$variable: SQL ifade parametresine bağlanmak için PHP değişkeninin (karışık) adı.

$ data_type: Isteğe bağlı (tam sayı) PDO::P ARAM_* sabiti. Varsayılan olarak PDO::P ARAM_STR.

$ uzunluk: Veri türünün isteğe bağlı (tam sayı) uzunluğu. PDO::P ARAM_INT veya PDO::P ARAM_BOOL kullanırken varsayılan boyutu belirtmek için PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE data_type belirtebilirsiniz.

$ driver_options: Isteğe bağlı (karışık) sürücüye özel seçenekler. Örneğin, PDO::SQLSRV_ENCODING_UTF8 olarak sütunu UTF-8 ile kodlanmış bir dizi olarak bir değişkene bağlamak için belirtebilirsiniz.

Dönüş Değeri

Başarı konusunda DOĞRU, aksi takdirde YANLIŞ.

Remarks

Varbinary, binary veya varbinary(max) tipte sunucu sütunlarına null veri bağlarken, $driver_options kullanarak ikili kodlama (PDO::SQLSRV_ENCODING_BINARY) belirtmelisiniz. Kodlama sabitleri hakkında daha fazla bilgi için bkz. Sabitler.

PDO desteği, SQL Server için Microsoft Drivers for PHP sürümünün 2.0 sürümünde eklenmiştir.

Parametre örneği

Bu kod örneği, $contact parametreye bağlandıktan sonra değerin değiştirilmesinin sorguda iletilen değeri değiştirdiğini gösterir.

<?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->bindParam(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->bindParam(':contact', $contact);  
$contact = "Owner";  
$stmt->execute();  
  
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {  
   print "$row[Name]\n\n";  
}  
?>  

Çıkış parametre örneği

Bu kod örneği, bir çıkış parametresine nasıl erişileceğini gösterir.

<?php  
$database = "Test";  
$server = "(local)";  
$conn = new PDO("sqlsrv:server=$server ; Database = $database", "", "");  
  
$input1 = 'bb';  
  
$stmt = $conn->prepare("select ? = count(*) from Sys.tables");  
$stmt->bindParam(1, $input1, PDO::PARAM_STR, 10);  
$stmt->execute();  
echo $input1;  
?>  

Note

Bir çıkış parametresini bigint tipine bağlamakta, değer tam sayı aralığının dışına çıkabilirse, PDO::P ARAM_INT ile PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE kullanmak "aralık dışı değer" istisnasına yol açabilir. Bu nedenle, varsayılan PDO::P ARAM_STR kullanın ve ortaya çıkan dizinin en fazla 21 boyutunu verin. Bu, herhangi bir bigint değerinin negatif işareti dahil olmak üzere en fazla rakam sayısıdır.

Giriş/Çıkış örneği

Bu kod örneği, giriş/çıkış parametresinin nasıl kullanılacağını gösterir.

<?php  
   $database = "AdventureWorks";  
   $server = "(local)";  
   $dbh = new PDO("sqlsrv:server=$server ; Database = $database", "", "");  
  
   $dbh->query("IF OBJECT_ID('dbo.sp_ReverseString', 'P') IS NOT NULL DROP PROCEDURE dbo.sp_ReverseString");  
   $dbh->query("CREATE PROCEDURE dbo.sp_ReverseString @String as VARCHAR(2048) OUTPUT as SELECT @String = REVERSE(@String)");  
   $stmt = $dbh->prepare("EXEC dbo.sp_ReverseString ?");  
   $string = "123456789";  
   $stmt->bindParam(1, $string, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 2048);  
   $stmt->execute();  
   print $string;   // Expect 987654321  
?>  

Note

PHP'nin kayan nokta sayıları için hassasiyet ve doğruluk sağlamak için değerleri ondalık veya sayısal sütuna bağlamak için giriş olarak dizide kullanılması önerilir. Aynı durum bigint sütunları için de geçerlidir, özellikle değerler tam sayı aralığı dışında olduğunda.

Ondalık giriş örneği

Bu kod örneği, bir ondalık değeri giriş parametresi olarak nasıl bağlanacağını gösterir.

<?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->bindParam(1, $input, PDO::PARAM_STR);
$stmt->execute();