pg_unescape_bytea

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

pg_unescape_bytea Unescape binary for bytea type

Opis

pg_unescape_bytea ( string $data ) : string

pg_unescape_bytea() unescapes PostgreSQL bytea data values. It returns the unescaped string, possibly containing binary data.

Informacja:

When you SELECT a bytea type, PostgreSQL returns octal byte values prefixed with '\' (e.g. \032). Users are supposed to convert back 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 (image) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 or later does not need a cast. The exception is when the client and backend character encoding does not match, and there may be multi-byte stream error. User must then cast to bytea to avoid this error.

Parametry

data

A string containing PostgreSQL bytea data to be converted into a PHP binary string.

Zwracane wartości

A string containing the unescaped data.

Przykłady

Przykład #1 pg_unescape_bytea() example

<?php 
  
// Connect to the database
  
$dbconn pg_connect('dbname=foo');
  
  
// Get 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: image/jpeg');
  echo 
pg_unescape_bytea($raw);
?>

Rejestr zmian

Wersja Opis
5.5.1 A warning is thrown if the input string is invalid.

Zobacz też:

  • pg_escape_bytea() - Dodaje znaki ucieczki do łańcucha dodającego do pola typu bytea
  • pg_escape_string() - Dodaje znaki ucieczki do łańcucha znaków (stringa) używanego w zapytaniach

add a note add a note

User Contributed Notes 3 notes

up
5
liviu dot mirea at gmail dot com
13 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
1
muralito at montevideo dot com dot uy
13 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)
up
-2
tiagopastorello at gmail dot com
15 years ago
<?php
$conexao
= pg_connect("host=localhost dbname=name user=postgres password=123456") or die('Sorry =( : ' . pg_last_error());

$cod= $_GET['cod'];

$sql = "SELECT * FROM table WHERE cod_field = '$cod'";
$quer = pg_query($conexao, $sql);

$reg = pg_fetch_object($query);

print
pg_unescape_bytea($reg -> field_bytea);

?>
To Top