pg_unescape_bytea

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_unescape_bytea Elimina la protección de una cadena de tipo bytea

Descripción

pg_unescape_bytea(string $string): string

pg_unescape_bytea() elimina la protección de los caracteres de tipo bytea. Devuelve el string protegido, que puede contener datos binarios.

Nota:

Al utilizar una sentencia SELECT con datos de tipo bytea, PostgreSQL devuelve valores octales, precedidos por barras invertidas \ (p. ej. \032). Los usuarios deben realizar la conversión al formato binario por sí mismos.

pg_escape_bytea() requiere PostgreSQL 7.2 o posterior. Con PostgreSQL 7.2.0 y 7.2.1, los datos de tipo bytea deben ser convertidos cuando se activa el soporte para cadenas de caracteres multioctetos. i.e. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);. PostgreSQL 7.2.2 o posterior no requiere esta manipulación. Sin embargo, si el cliente y el servidor no utilizan el mismo juego de caracteres, pueden producirse errores. En ese caso, es necesario forzar la conversión manualmente para evitar este error.

Parámetros

string

Un string que contiene los datos bytea de PostgreSQL a ser convertidos en string binario de PHP.

Valores devueltos

Un string que contiene los datos protegidos.

Ejemplos

Ejemplo #1 Ejemplo con pg_unescape_bytea()

<?php
// Conexión a la base de datos
$dbconn = pg_connect('dbname=foo');

// Recuperación de los datos bytea
$res = pg_query("SELECT data FROM galeria WHERE nombre='Arboles Pino'");
$raw = pg_fetch_result($res, 'data');

// Convierte a binario y envía al navegador
header('Content-type: image/jpeg');
echo
pg_unescape_bytea($raw);
?>

Ver también

add a note

User Contributed Notes 2 notes

up
5
liviu dot mirea at gmail dot com
14 years ago
PostgreSQL 9.0 introduced "hex" as the new default format for encoding binary data. Because "pg_unescape_bytea" only works with the old "escape" format, you need to do pg_query('SET bytea_output = "escape";'); before executing your select queries.

More details can be found here: http://www.postgresql.org/docs/9.0/static/datatype-binary.html

[Ed: Recent PostgreSQL versions support unescaping the "hex" format.]
up
0
muralito at montevideo dot com dot uy
14 years ago
The workaround is to configure a property in the postgres database for the user, to make postgres behave as the old default.

ALTER USER username SET bytea_output = 'escape';

(or using the pgadmin interface)
To Top