PHP: pg_escape_bytea - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

pg_escape_string pg_end_copy

Last updated: Sat, 27 Jan 2007

view this page in

# pg_escape_bytea

(PHP 4 >= 4.2.0, PHP 5)

pg_escape_bytea -- Escape a string for insertion into a bytea field

## Описание

string pg_escape_bytea ( string data )

pg_escape_bytea() escapes string for bytea datatype. It returns escaped string.

> Замечание: 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.

## Список параметров

`data`

  A string containing text or binary data to be inserted into a bytea column.

## Возвращаемые значения

A string containing the escaped data.

## Примеры

Пример 1. pg_escape_bytea() example

`<?php
// Connect to the database
$dbconn = pg_connect('dbname=foo');
// Read in a binary file
$data = file_get_contents('image1.jpg');
// Escape the binary data
$escaped = pg_escape_bytea($data);
// Insert it into the database
pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', '{$escaped}')");
?>`

## Смотрите также

pg_unescape_bytea()
pg_escape_string()

add a note User Contributed Notes
pg_escape_bytea
Mocha
07-Aug-2003 05:20
`to unescape_bytea use stripcslashes(). If you need to escape bytea and don't have pg_escape_bytea() function then use:
function escByteA($binData) {
/**
* \134 = 92 = backslash, \000 = 00 = NULL, \047 = 39 = Single Quote
*
* str_replace() replaces the searches array in order. Therefore, we must
* process the 'backslash' character first. If we process it last, it'll
* replace all the escaped backslashes from the other searches that came
* before.
*/
$search = array(chr(92), chr(0), chr(39));
$replace = array('\\\134', '\\\000', '\\\047');
$binData = str_replace($search, $replace, $binData);
return $binData;
//echo "<pre>$binData</pre>";
//exit;
}`
php at tobias dot olsson dot be
17-Aug-2002 09:56
`if you need to change back bytea from the db to normal data, this will do that:
function pg_unescape_bytea($bytea) {
return eval("return \"".str_replace('$', '\\$', str_replace('"', '\\"', $bytea))."\";");
}
// use like this
$rs = pg_query($conn, "SELECT image from images LIMIT 1");
$image = pg_unescape_bytea(pg_fetch_result($rs, 0, 0));
/Tobias`
add a note
pg_escape_string pg_end_copy

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST