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

search for in the

pg_escape_string> <pg_end_copy
Last updated: Fri, 14 Nov 2008

view this page in

pg_escape_bytea

(PHP 4 >= 4.2.0, PHP 5)

pg_escape_bytea Konwertuje łańcuch wstawiając sekwencje Escape dla typu bytea

Opis

string pg_escape_bytea ([ resource $połączenie ], string $dane )

pg_escape_bytea() konwertuje łańcuch wstawiając sekwencje Escape dla typu bytea. Zwraca łańcuch z sekwencjami Escape.

Informacja: Przy wywołaniu SELECT dla typu bytea, PostgrSQL zwraca łańcuchy zawierające wartości ósemkowe poprzedzone znakiem "\" (np. \032). Użytkownicy muszą samodzielnie odkodować te dane.
Ta funkcja wymaga PostgreSQL 7.2 lub nowszego. Dla PostgreSQL 7.2.0 i 7.2.1, wartości bytea muszą być wskazane jeśli uruchomisz wsparcie dla kodowania wielobajtowego np. INSERT INTO tabela_testowa (obraz) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 i nowszy nie potrzebuje wskazania typu. Wyjątkiem jest przypadek kiedy klient i serwer posługują się różnymi stronami kodowymi. W takim przypadku może wystąpić błąd (ang. multi-byte stream error). Użytkownik musi wtedy wskazać typ bytea, by uniknąć tego błędu.

Parametry

połączenie

Identyfikator połączenia do bazy danych PostgreSQL. Kiedy połączenie nie został podany, domyślne połączenie zostaje użyte. Domyślnym połączeniem jest ostatnie połączenie stworzone przez pg_connect() lub pg_pconnect().

dane

Łańcuch (ang. string) zawierający tekst lub binarne dane wstawiane do kolumny bytea.

Zwracane wartości

Łańcuch (ang. string) zawierający dane z sekwencjami Escape..

Rejestr zmian

Wersja Opis
5.2.0 Parametr połączenie został dodany

Przykłady

Example #1 pg_escape_bytea() - przykład

<?php
  
// Połącz z bazą
  
$połączenie pg_connect('dbname=foo');
  
  
// Przeczytaj z binarnego pliku
  
$dane file_get_contents('obrazek1.jpg');

  
// Poprzedź sekwencjami Escape dane binarne
  
$escaped pg_escape_bytea($dane);
  
  
// Wpisz to do bazy danych
  
pg_query("INSERT INTO galeria (nazwa, dane) VALUES ('Drzewa sosnowe', '{$escaped}')");
?>



add a note add a note User Contributed Notes
pg_escape_bytea
Mocha
08-Aug-2003 12: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 04: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

pg_escape_string> <pg_end_copy
Last updated: Fri, 14 Nov 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites