Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Prepara e executa uma declaração.
Syntax
sqlsrv_query(resource $conn, string $tsql [, array $params [, array $options]])
Parameters
$conn: O recurso de ligação associado à declaração preparada.
$tsql: A Transact-SQL expressão que corresponde à declaração preparada.
$params [OPCIONAL]: Um array de valores que correspondem a parâmetros numa consulta parametrizada. Cada elemento do array pode ser um dos seguintes:
Um valor literal.
Uma variável PHP.
Um array com a seguinte estrutura:
array($value [, $direction [, $phpType [, $sqlType]]])A descrição de cada elemento do array encontra-se na tabela seguinte:
Elemento Description $value Um valor literal, uma variável PHP ou uma variável PHP por referência. $direction[OPCIONAL] Uma das seguintes constantes SQLSRV_PARAM_* é usada para indicar a direção do parâmetro: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. O valor padrão é SQLSRV_PARAM_IN.
Para mais informações sobre constantes PHP, consulte Constantes (Microsoft Drivers for PHP for SQL Server).$phpType[OPCIONAL] Uma constante SQLSRV_PHPTYPE_* que especifica o tipo de dado PHP do valor devolvido.
Para mais informações sobre constantes PHP, consulte Constantes (Microsoft Drivers for PHP for SQL Server).$sqlType[OPCIONAL] Uma constante SQLSRV_SQLTYPE_* que especifica o tipo de dado SQL Server do valor de entrada.
Para mais informações sobre constantes PHP, consulte Constantes (Microsoft Drivers for PHP for SQL Server).
$options [OPCIONAL]: Um array associativo que define propriedades de consulta. É a mesma lista de teclas que também suportam sqlsrv_prepare.
Valor de retorno
Um recurso para declarações. Se a instrução não puder ser criada e/ou executada, a falsidade é devolvida.
Remarks
A função sqlsrv_query é adequada para consultas únicas e deve ser a escolha padrão para executar consultas, salvo circunstâncias especiais. Esta função fornece um método simplificado para executar uma consulta com o mínimo de código. A função sqlsrv_query faz tanto a preparação como a execução de instruções e pode ser usada para executar consultas parametrizadas.
Para mais informações, veja Como: Recuperar Parâmetros de Saída Usando o Driver SQLSRV.
Exemplo 1
No exemplo seguinte, uma única linha é inserida na tabela Sales.SalesOrderDetail da base de dados AdventureWorks. O exemplo assume que o SQL Server e a base de dados AdventureWorks estão instalados no computador local. Toda a saída é escrita para a consola quando o exemplo é executado a partir da linha de comandos.
Note
Embora o exemplo seguinte use uma INSERT instrução para demonstrar o uso de sqlsrv_query para a execução de uma instrução única, o conceito aplica-se a qualquer instrução Transact-SQL.
<?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);
?>
Exemplo 2
O exemplo seguinte atualiza um campo na tabela Sales.SalesOrderDetail da base de dados AdventureWorks. O exemplo assume que o SQL Server e a base de dados AdventureWorks estão instalados no computador local. Toda a saída é escrita para a consola quando o exemplo é executado a partir da linha de comandos.
<?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
Recomenda-se usar cadeias de caracteres como entradas ao ligar valores a uma coluna decimal ou numérica para garantir precisão e exatidão, pois o PHP tem precisão limitada para números de ponto flutuante. O mesmo se aplica às colunas bigint, especialmente quando os valores estão fora do intervalo de um inteiro.
Exemplo 3
Este exemplo de código mostra como atribuir um valor decimal como parâmetro de entrada.
<?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);
?>
Exemplo 4
Este exemplo de código mostra como criar uma tabela de sql_variant tipos e obter os dados inseridos.
<?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);
?>
A saída esperada seria:
First field: 1
Second field: test_data
Ver também
Referência da API do Driver SQLSRV
Como: Realizar Consultas Parametrizadas