PHP 5.4.36 Released

pg_unescape_bytea

(PHP 4 >= 4.3.0, PHP 5)

pg_unescape_bytea Supprime la protection d'une chaîne de type bytea

Description

string pg_unescape_bytea ( string $data )

pg_unescape_bytea() supprime la protection des caractères de type bytea. Elle retourne la chaîne de caractères protégée, pouvant contenir des données binaires.

Note:

Lorsque vous utilisez une commande SELECT avec des données de type bytea, PostgreSQL retourne des valeurs octales, préfixées avec des antislashs \ (e.g. \032). Les utilisateurs doivent effectuer la conversion en format binaire eux-mêmes.

pg_escape_bytea() requiert PostgreSQL 7.2 ou plus récent. Avec PostgreSQL 7.2.0 et 7.2.1, les données de type bytea doivent être transtypée lorsque vous activez le support des chaînes de caractères multioctets. i.e. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);. PostgreSQL 7.2.2 ou plus récent ne requiert pas cette manipulation. Toutefois, si le client et le serveur n'utilisent pas le même jeu de caractères, il peut arriver des erreurs. Il faut alors forcer le transtypage manuellement pour éviter cette erreur.

Liste de paramètres

data

Une chaîne de caractères contenant les données bytea PostgreSQL à être converties en chaîne de caractères binaire PHP.

Valeurs de retour

Une chaîne de caractères contenant les données protégées.

Exemples

Exemple #1 Exemple avec pg_unescape_bytea()

<?php 
  
// Connexion à la base de données
  
$dbconn pg_connect('dbname=foo');
  
  
// Récupération des données bytea
  
$res pg_query("SELECT data FROM galerie WHERE nom='Arbres Pin'");  
  
$raw pg_fetch_result($res'data');
  
  
// Convertit en binaire et envoie au navigateur
  
header('Content-type: image/jpeg');
  echo 
pg_unescape_bytea($raw);
?>

Historique

Version Description
5.5.1 Une alerte est émise si la chaîne d'entrée n'est pas valide.

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
1
muralito at montevideo dot com dot uy
3 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
1
liviu dot mirea at gmail dot com
4 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
up
-1
tiagopastorello at gmail dot com
6 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