Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przypisuje parametr do nazwanego lub znaku zapytania w instrukcji SQL.
Syntax
bool PDOStatement::bindParam($parameter, &$variable[, $data_type[, $length[, $driver_options]]]);
Parametry
$parametr: (mieszany) identyfikator parametrów. Dla instrukcji używającej nazwanych zastępców używaj nazwy parametru (:name). Dla przygotowanego zdania z użyciem składni znaku zapytania jest to indeks parametru oparty na 1.
&$variable: (mieszana) nazwa zmiennej PHP do powiązania z parametrem instrukcji SQL.
$ data_type: Opcjonalna (całkowita) stała PDO::P ARAM_*. Domyślnie to PDO::P ARAM_STR.
$ długość: opcjonalna (całkowita) długość typu danych. Możesz określić PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE, aby wskazać domyślny rozmiar podczas używania PDO::P ARAM_INT lub PDO::P ARAM_BOOL w data_type $.
$ driver_options: Opcjonalne (mieszane) opcje specyficzne dla kierowców. Na przykład możesz określić PDO::SQLSRV_ENCODING_UTF8 tak, aby powiązać kolumnę ze zmienną jako ciąg zakodowany w UTF-8.
Wartość zwracana
PRAWDZIWE w przypadku sukcesu, w przeciwnym razie FAŁSZYWE.
Remarks
Przy wiązaniu danych null z kolumnami serwera typu varbinary, binary lub varbinary(max) należy określić kodowanie binarne (PDO::SQLSRV_ENCODING_BINARY) za pomocą driver_options $. Więcej informacji o stałych kodowania można znaleźć w artykule Stałe.
Wsparcie dla PDO zostało dodane w wersji 2.0 sterowników Microsoft dla PHP dla SQL Server.
Przykład parametru
Ten przykład kodu pokazuje, że po powiązaniu $contact z parametrem, zmiana wartości zmienia wartość przekazaną w zapytaniu.
<?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";
}
?>
Przykład parametru wyjściowego
Ten przykład kodu pokazuje, jak uzyskać dostęp do parametru wyjściowego.
<?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
Przy wiązaniu parametru wyjściowego z typem bigint, jeśli wartość może wyjść poza zakres liczby całkowitej, użycie PDO::P ARAM_INT z PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE może skutkować wyjątkiem "wartość poza zakresem". Dlatego użyj domyślnego PDO::P ARAM_STR i podaj rozmiar powstałego ciągu znaków, który wynosi maksymalnie 21. Jest to maksymalna liczba cyfr, wliczając znak ujemny, dowolnej wartości bigint.
Przykład wejścia/wyjścia
Ten przykładowy kod pokazuje, jak używać parametru wejścia/wyjścia.
<?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
Zaleca się używanie łańcuchów jako danych wejściowych przy wiązaniu wartości z kolumną dziesiętną lub liczbową , aby zapewnić precyzję i dokładność, ponieważ PHP ma ograniczoną precyzję dla liczb zmiennoprzecinkowych. To samo dotyczy kolumn bigint, zwłaszcza gdy wartości wykraczają poza zakres liczby całkowitej.
Przykład wejścia dziesiętnego
Ten przykład kodu pokazuje, jak powiązać wartość dziesiętną jako parametr wejściowy.
<?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();