pg_query_params

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_query_params Envía un comando al servidor y espera el resultado, con la capacidad de pasar parámetros por separado del texto SQL de la consulta

Descripción

pg_query_params(PgSql\Connection $connection = ?, string $query, array $params): PgSql\Result|false

Envía un comando al servidor y espera el resultado, con la capacidad de pasar parámetros por separado del texto SQL de la consulta.

pg_query_params() es como pg_query(), pero ofrece funcionalidades adicionales: los valores de los parámetros pueden especificarse por separado de la línea de comando propia. pg_query_params() es soportada solo con versiones PostgreSQL 7.4 o posteriores; el comando fallará si se utiliza con versiones anteriores.

Si se utilizan parámetros, se refieren a $1, $2, etc. en query. El mismo parámetro puede aparecer más de una vez en la consulta query; se utilizará el mismo valor en ese caso. params especifica los valores actuales de los parámetros. Un valor null en este array significa que el parámetro correspondiente es SQL null.

La principal ventaja de pg_query_params() sobre pg_query() es que los valores de los parámetros pueden separarse de la consulta query, por lo tanto, se evitan los escapes de caracteres tediosos y propensos a errores. A diferencia de pg_query(), pg_query_params() permite solo un comando SQL en la cadena dada. (Puede haber puntos y coma en el interior pero no más de un comando.)

Parámetros

connection

An PgSql\Connection instance. When connection is unspecified, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

Advertencia

As of PHP 8.1.0, using the default connection is deprecated.

query

La consulta SQL con sus parámetros. Debe contener solo una consulta. Múltiples consultas separadas por puntos y coma no están permitidas. Si se utilizan parámetros, se refieren a $1, $2, etc.

Los valores proporcionados por el usuario siempre deben pasarse como parámetros, y no interpolados en la cadena de consulta, donde pueden potencialmente formar inyecciones SQL e introducir errores cuando estos datos contienen comillas. Si por alguna razón no se pueden utilizar parámetros, asegúrese de que los valores interpolados estén correctamente escapados.

params

Un array de valores de parámetros para sustituir las variables $1, $2, etc. en la consulta preparada original. El número de elementos presentes en el array debe coincidir con el número de variables a reemplazar.

Los valores esperados para los campos bytea no son soportados como parámetros. Utilice en su lugar la función pg_escape_bytea() o utilice las funciones sobre los objetos grandes.

Valores devueltos

Una instancia PgSql\Result en caso de éxito, o false en caso de error.

Historial de cambios

Versión Descripción
8.1.0 Returns an PgSql\Result instance now; previously, a recurso was returned.
8.1.0 The connection parameter expects an PgSql\Connection instance now; previously, a recurso was expected.

Ejemplos

Ejemplo #1 Ejemplo con pg_query_params()

<?php
// Conexión a una base de datos llamada "marie"
$dbconn = pg_connect("dbname=marie");

// Busca todas las tiendas llamadas Joe's Widgets. Note que no es
// necesario escapar la cadena "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM tiendas WHERE nombre = $1', array("Joe's Widgets"));

// Comparación usando pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM tiendas WHERE nombre = '{$str}'");

?>

Ver también