Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Připraví a provede prohlášení.
Syntax
sqlsrv_query(resource $conn, string $tsql [, array $params [, array $options]])
Parameters
$conn: Zdroj spojení spojený s připraveným prohlášením.
$tsql: Transact-SQL výraz, který odpovídá připravenému výroku.
$params [VOLITELNÉ]: Pole hodnot odpovídajících parametrům v parametrizovaném dotazu. Každý prvek pole může být jedním z následujících:
Doslovná hodnota.
PHP proměnná.
Pole s následující strukturou:
array($value [, $direction [, $phpType [, $sqlType]]])Popis každého prvku pole je v následující tabulce:
prvek Description $value Literální hodnota, PHP proměnná nebo PHP podle reference. $direction[VOLITELNÉ] Jedna z následujících SQLSRV_PARAM_* konstant používaných k označení směru parametru: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. Výchozí hodnota je SQLSRV_PARAM_IN.
Pro více informací o konstantách v PHP viz Konstanty (Microsoft Drivers for PHP for SQL Server).$phpType[VOLITELNÉ] Konstanta SQLSRV_PHPTYPE_*, která specifikuje PHP datový typ vrácené hodnoty.
Pro více informací o konstantách v PHP viz Konstanty (Microsoft Drivers for PHP for SQL Server).$sqlType[VOLITELNÉ] Konstanta SQLSRV_SQLTYPE_*, která určuje SQL Server datový typ vstupní hodnoty.
Pro více informací o konstantách v PHP viz Konstanty (Microsoft Drivers for PHP for SQL Server).
$options [OPTIONAL]: Asociativní pole, které nastavuje vlastnosti dotazů. Je to stejný seznam klíčů, který podporuje také sqlsrv_prepare.
Návratová hodnota
Zdroj prohlášení. Pokud nelze příkaz vytvořit a/nebo vykonat, vrací se false (nepravdivé ).
Remarks
Funkce sqlsrv_query je dobře vhodná pro jednorázové dotazy a měla by být výchozí volbou pro provádění dotazů, pokud neplatí zvláštní okolnosti. Tato funkce poskytuje zjednodušený způsob pro provedení dotazu s minimálním množstvím kódu. Funkce sqlsrv_query provádí jak přípravu příkazů, tak jejich provádění a lze ji použít k provádění parametrizovaných dotazů.
Pro více informací viz Jak načíst: Získat výstupní parametry pomocí ovladače SQLSRRV.
Příklad 1
V následujícím příkladu je do tabulky Sales.SalesOrderDetail v databázi AdventureWorks vložen jeden řádek. Příklad předpokládá, že SQL Server a databáze AdventureWorks jsou nainstalovány v místním počítači. Při spuštění příkladu z příkazového řádku se veškerý výstup zapíše do konzoly.
Note
Ačkoli následující příklad používá INSERT příkaz k demonstraci použití sqlsrv_query pro jednorázové provedení příkazu, tento koncept se vztahuje na jakékoli Transact-SQL tvrzení.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
/* Set up the parameterized query. */
$tsql = "INSERT INTO Sales.SalesOrderDetail
(SalesOrderID,
OrderQty,
ProductID,
SpecialOfferID,
UnitPrice,
UnitPriceDiscount)
VALUES
(?, ?, ?, ?, ?, ?)";
/* Set parameter values. */
$params = array(75123, 5, 741, 1, 818.70, 0.00);
/* Prepare and execute the query. */
$stmt = sqlsrv_query($conn, $tsql, $params);
if ($stmt) {
echo "Row successfully inserted.\n";
} else {
echo "Row insertion failed.\n";
die(print_r(sqlsrv_errors(), true));
}
/* Free statement and connection resources. */
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Příklad 2
Následující příklad aktualizuje pole v tabulce Sales.SalesOrderDetail v databázi AdventureWorks. Příklad předpokládá, že SQL Server a databáze AdventureWorks jsou nainstalovány v místním počítači. Při spuštění příkladu z příkazového řádku se veškerý výstup zapíše do konzoly.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
/* Set up the parameterized query. */
$tsql = "UPDATE Sales.SalesOrderDetail
SET OrderQty = (?)
WHERE SalesOrderDetailID = (?)";
/* Assign literal parameter values. */
$params = array(5, 10);
/* Execute the query. */
if (sqlsrv_query($conn, $tsql, $params)) {
echo "Statement executed.\n";
} else {
echo "Error in statement execution.\n";
die(print_r(sqlsrv_errors(), true));
}
/* Free connection resources. */
sqlsrv_close($conn);
?>
Note
Doporučuje se používat řetězce jako vstupy při vázání hodnot na desetinný nebo číselný sloupec , aby byla zajištěna přesnost a přesnost, protože PHP má omezenou přesnost pro čísla s plovoucí desetinnou čárkou. Totéž platí pro sloupce bigint, zejména když hodnoty přesahují rozsah celého čísla.
Příklad 3
Tento vzor kódu ukazuje, jak navázat desetinnou hodnotu jako vstupní parametr.
<?php
$serverName = "(local)";
$connectionInfo = array("Database"=>"YourTestDB");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
// Assume TestTable exists with a decimal field
$input = "9223372036854.80000";
$params = array($input);
$stmt = sqlsrv_query($conn, "INSERT INTO TestTable (DecimalCol) VALUES (?)", $params);
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Příklad 4
Tento vzor kódu ukazuje, jak vytvořit tabulku typů sql_variant a načíst vložená data.
<?php
$server = 'serverName';
$dbName = 'databaseName';
$uid = 'yourUserName';
$pwd = 'yourPassword';
$options = array("Database"=>$dbName, "UID"=>$uid, "PWD"=>$pwd);
$conn = sqlsrv_connect($server, $options);
if($conn === false) {
die(print_r(sqlsrv_errors(), true));
}
$tableName = 'testTable';
$query = "CREATE TABLE $tableName ([c1_int] sql_variant, [c2_varchar] sql_variant)";
$stmt = sqlsrv_query($conn, $query);
if($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);
$query = "INSERT INTO [$tableName] (c1_int, c2_varchar) VALUES (1, 'test_data')";
$stmt = sqlsrv_query($conn, $query);
if($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);
$query = "SELECT * FROM $tableName";
$stmt = sqlsrv_query($conn, $query);
if(sqlsrv_fetch($stmt) === false) {
die(print_r(sqlsrv_errors(), true));
}
$col1 = sqlsrv_get_field($stmt, 0);
echo "First field: $col1 \n";
$col2 = sqlsrv_get_field($stmt, 1);
echo "Second field: $col2 \n";
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Očekávaný výstup by byl:
First field: 1
Second field: test_data
Viz také
Referenční informace k rozhraní API ovladače SQLSRV
Postupy: Provádění parametrizovaných dotazů
O příkladech kódu v dokumentaci