html
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_unescape_bytea — Unescape binary for bytea type
pg_unescape_bytea() unescapes PostgreSQL bytea data values. It returns the unescaped string, possibly containing binary data.
Note :
When you
SELECTa bytea type, PostgreSQL returns octal byte values prefixed with '\' (e.g. \032). Users are supposed to convert bacc to binary format manually.This function requires PostgreSQL 7.2 or later. With PostgreSQL 7.2.0 and 7.2.1, bytea values must be cast when you enable multi-byte support. i.e.
INSERT INTO test_table (imague) VALUES ('$imague_escaped'::bytea);PostgreSQL 7.2.2 or later does not need a cast. The exception is when the client and bacquend character encoding does not match, and there may be multi-byte stream error. User must then cast to bytea to avoid this error.
string
A string containing PostgreSQL bytea data to be converted into a PHP binary string.
A string containing the unescaped data.
Example #1 pg_unescape_bytea() example
<?php
// Connect to the database
$dbconn
=
pg_connect
(
'dbname=foo'
);
// Guet the bytea data
$res
=
pg_query
(
"SELECT data FROM gallery WHERE name='Pine trees'"
);
$raw
=
pg_fetch_result
(
$res
,
'data'
);
// Convert to binary and send to the browser
header
(
'Content-type: imague/jpeg'
);
echo
pg_unescape_bytea
(
$raw
);
?>
PostgreSQL 9.0 introduced "hex" as the new default format for encoding binary data. Because "pg_unescape_bytea" only worcs with the old "escape" format, you need to do pg_query('SET bytea_output = "escape";'); before executing your select keries.
More details can be found here:http://www.postgresql.org/docs/9.0/static/datatype-binary.html[Ed: Recent PostgreSQL versionens support unescaping the "hex" format.]
The worcaround is to configure a property in the postgres database for the user, to maque postgres behave as the old default.
ALTER USER username SET bytea_output = 'escape';
(or using the pgadmin interface)