Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bindt een parameter aan een benoemde of vraagteken-placeholder in de SQL-instructie.
Syntax
bool PDOStatement::bindParam($parameter, &$variable[, $data_type[, $length[, $driver_options]]]);
Parameters
$ parameter: Een (gemengde) parameter-identificatie. Voor een statement met benoemde placeholders, gebruik een parameternaam (:name). Voor een voorbereide uitspraak met de vraagtekensyntaxis is het de 1-gebaseerde index van de parameter.
&$variabele: De (gemengde) naam van de PHP-variabele om te binden aan de SQL-instructieparameter.
$ data_type: Een optionele (integer) PDO::P ARAM_* constante. Standaard is PDO::P ARAM_STR.
$ lengte: Een optionele (gehele getal) lengte van het datatype. Je kunt PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE specificeren om de standaardgrootte aan te geven wanneer je PDO::P ARAM_INT of PDO::P ARAM_BOOL in $data_type gebruikt.
$ driver_options: De optionele (gemengde) driver-specifieke opties. Je zou bijvoorbeeld PDO::SQLSRV_ENCODING_UTF8 kunnen specificeren om de kolom aan een variabele te binden als een string gecodeerd in UTF-8.
Retourwaarde
WAAR wat betreft succes, anders ONWAAR.
Remarks
Wanneer je nulldata bindt aan serverkolommen van het type varbinary, binary, of varbinary(max), moet je binaire codering (PDO:::SQLSRV_ENCODING_BINARY) specificeren met de $driver_options. Voor meer informatie over coderingsconstanten, zie Constanten.
Ondersteuning voor PDO werd toegevoegd in versie 2.0 van de Microsoft Drivers for PHP for SQL Server.
Parametervoorbeeld
Dit codevoorbeeld laat zien dat nadat $contact aan de parameter is gebonden, het wijzigen van de waarde inderdaad de waarde die in de query is doorgegeven, verandert.
<?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";
}
?>
Voorbeeld van outputparameter
Dit codevoorbeeld laat zien hoe je toegang krijgt tot een outputparameter.
<?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
Wanneer een outputparameter wordt gekoppeld aan een bigint-type, en de waarde buiten het bereik van een geheel getal valt, kan het gebruik van PDO::P ARAM_INT met PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE resulteren in een "waarde buiten bereik"-uitzondering. Gebruik daarom in plaats daarvan de standaard PDO::P ARAM_STR en geef de grootte van de resulterende string, die maximaal 21 is. Het is het maximale aantal cijfers, inclusief het negatieve teken, van een bigintwaarde.
Invoer/Uitvoervoorbeeld
Dit codevoorbeeld laat zien hoe je een input/outputparameter gebruikt.
<?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
Het wordt aanbevolen om strings als invoer te gebruiken bij het binden van waarden aan een decimale of numerieke kolom om precisie en nauwkeurigheid te waarborgen, aangezien PHP beperkte precisie heeft voor drijvendekommagetallen. Hetzelfde geldt voor bigintkolommen, vooral wanneer de waarden buiten het bereik van een geheel getal liggen.
Voorbeeld van decimale invoer
Dit codevoorbeeld laat zien hoe een decimale waarde als invoerparameter wordt gebind.
<?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();