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;
}
pg_escape_bytea
(PHP 4 >= 4.2.0, PHP 5)
pg_escape_bytea — Maskiert Zeichenketten zum Einfügen in ein Feld vom Typ bytea
Beschreibung
$connection
], string $data
)
pg_escape_bytea() maskiert
data fr den Datentyp bytea und gibt den
maskierten String zurück.
Hinweis:
Wenn Sie mit SELECT Daten vom Typ bytea abfragen, gibt PostgreSQL die Oktalwerte der einzelnen Datenbytes zurück, denen ein Backslash vorangestellt ist (z.B. \032). Diese Werte müssen vom Benutzer in das Binärformat zurückkonvertiert werden.
Diese Funktion setzt PostgreSQL 7.2 oder höher voraus. Mit den PostgreSQL-Versionen 7.2.0 und 7.2.1 muss der Typ bytea konvertiert werden, falls die multi-byte-Unterstützung benutzt wird, z.B. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);. Ab der PostgreSQL-Version 7.2.2 und höher, muss keine Typkonvertierung mehr durchgeführt werden. Es sei denn, die Codierungen von Client und Server passen nicht zusammen, was zu einem multi-byte Streamfehler führen kann. Um diesen Fehler zu vermeiden, muss der Stream in den Typ bytea konvertiert werden.
Parameter-Liste
-
connection -
PostgreSQL Verbindungskennung. Wenn der Parameter
connectionnicht angegeben ist, wird die Standardverbindung benutzt. Das ist die Verbindung, die zuletzt von pg_connect() oder pg_pconnect() geöffnet wurde. -
data -
Ein string, der Text oder Binärdaten enthält, die in eine Spalte vom Typ bytea eingefügt werden sollen.
Rückgabewerte
Ein string mit den maskierten Daten.
Changelog
| Version | Beschreibung |
|---|---|
| 5.2.0 |
Der Parameter connection wurde hinzugefügt.
|
Beispiele
Beispiel #1 pg_escape_bytea() Beispiel
<?php
// Zur Datenbank verbinden
$dbconn = pg_connect('dbname=foo');
// eine Binärdatei auslesen
$data = file_get_contents('image1.jpg');
// Die Binärdaten maskieren
$escaped = pg_escape_bytea($data);
// und in die Datenbank einfügen
pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', '{$escaped}')");
?>
Siehe auch
- pg_unescape_bytea() - Entfernt Maskierungen für den Typ bytea
- pg_escape_string() - Maskiert einen String zum Einfgen in Felder mit text/char Datentypen
pg_escape_bytea
08-Aug-2003 02:20
17-Aug-2002 06: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