pg_query_params
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
pg_query_params — Envia um comando ao servidor e aguarda o resultado, com a capacidade de passar parâmetros separadamente do texto do comando SQL
Descrição
Envia um comando ao servidor e aguarda o resultado, podendo passar parâmetros separadamente do texto do comando SQL.
pg_query_params() é como pg_query(), mas oferece funcionalidade adicional: os valores dos parâmetros podem ser especificados separadamente da string de comando propriamente dita. pg_query_params() é compatível apenas com conexões PostgreSQL 7.4 ou superior; falhará ao usar versões anteriores.
Se parâmetros forem usados, eles serão referidos na string
query
como $1, $2, etc. O mesmo parâmetro pode
aparecer mais de uma vez na query
; o mesmo valor
será usado nesse caso. params
especifica os
valores reais dos parâmetros. Um valor null
neste array significa que o
parâmetro correspondente é SQL NULL
.
A principal vantagem de pg_query_params() sobre pg_query()
é que os valores dos parâmetros
podem ser separados da string query
, evitando assim a necessidade de tarefas tediosas
e propensas a erros de escape. Ao contrário de pg_query(),
pg_query_params() permite no
máximo um comando SQL na string fornecida. (Pode haver ponto-e-vírgula,
mas não mais do que um comando não vazio.)
Parâmetros
connection
-
Uma instância de PgSql\Connection. Quando o parâmetro
connection
não for especificado, a conexão padrão será usada. A conexão padrão é a última conexão feita por pg_connect() ou pg_pconnect().WarningA partir do PHP 8.1.0, usar a conexão padrão tornou-se defasado.
query
-
A instrução SQL parametrizada. Deve conter apenas uma única instrução. (múltiplas instruções separadas por ponto e vírgula não são permitidas.) Se algum parâmetro for usado, ele será chamado de $1, $2, etc.
Os valores fornecidos pelo usuário devem sempre ser passados como parâmetros, não interpolados na string de consulta, onde formam possíveis vetores de ataque de injeção de SQL e introduzem bugs ao manipular dados contendo aspas. Se por algum motivo você não puder usar um parâmetro, certifique-se de que os valores interpolados foram escapados corretamente.
params
-
Um array de valores de parâmetros para substituir os espaços reservados $1, $2, etc. na string de consult original preparada. O número de elementos no array deve corresponder ao número de espaços reservados.
Valores destinados a campos
bytea
não são suportados como parâmetros. Use pg_escape_bytea() ou use as funções de objetos grandes.
Valor Retornado
Uma instância PgSql\Result em caso de sucesso, ou false
em caso de falha.
Registro de Alterações
Versão | Descrição |
---|---|
8.1.0 | Agora retorna uma instância de PgSql\Result; anteriormente, um resource era retornado. |
8.1.0 |
O parâmetro connection agora espera uma instância de PgSql\Connection;
anteriormente, um resource era esperado.
|
Exemplos
Example #1 Usando pg_query_params()
<?php
// Conecta a um banco de dados chamado "mary"
$dbconn = pg_connect("dbname=mary");
// Encontre todas as lojas chamadas Joe's Widgets. Observe que não é necessário
// escapar "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));
// Compara com apenas o uso de pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$str}'");
?>