PHP.mk документација

pg_escape_bytea

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.pg-escape-bytea.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.pg-escape-bytea.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
pg_escape_bytea

Референца за `function.pg-escape-bytea.php` со подобрена типографија и навигација.

function.pg-escape-bytea.php

pg_escape_bytea

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_escape_bytea Escape a string for insertion into a bytea field

= NULL

pg_escape_bytea(PgSql\Connection $connection = ?, string $data): string

pg_escape_bytea() Избегај низа за вметнување во bytea поле

Забелешка:

избегнува низа за bytea тип. Враќа избегната низа. SELECT Кога вие

bytea тип, PostgreSQL враќа октални бајт вредности претходени со '\' (на пр. \032). Корисниците треба рачно да ги претворат назад во бинарен формат. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea); Оваа функција бара PostgreSQL 7.2 или понова верзија. Со PostgreSQL 7.2.0 и 7.2.1, bytea вредностите мора да се претворат кога ќе овозможите поддршка за повеќе бајти. т.е.

Параметри

connection

Еден PgSql\Connection инстанца. Кога connection не е наведено, се користи стандардната врска. Стандардната врска е последната врска направена од pg_connect() or pg_pconnect().

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Од PHP 8.1.0, користењето на стандардната врска е застарено.

data

А string PostgreSQL 7.2.2 или понова верзија не бара претворање. Исклучок е кога кодирањето на клиентот и бекендот не се совпаѓаат, и може да има грешка во протокот со повеќе бајти. Корисникот тогаш мора да претвори во bytea за да ја избегне оваа грешка.

Вратени вредности

А string што ја содржи избегнатата податок.

Дневник на промени

Верзија = NULL
8.1.0 На connection параметарот очекува PgSql\Connection инстанца сега; претходно, а resource се очекуваше.

Примери

Пример #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() содржи текст или бинарни податоци што треба да се вметнат во bytea колона.
  • pg_escape_string() - Избегнувај идентификатор за вметнување во текстуално поле

Белешки од корисници 8 белешки

- Отстрани избегнување на бинарни податоци за bytea тип
пред 17 години
The reason pg_unescape_bytea() do not exactly reproduce the binary data created by pg_escape_bytea() is because the backslash \ and single quote ' are double escaped by the pg_escape_bytea() function. This will lead to image seems corrupted when retrieve from the bytea field. The proper way to escape&unescape a binary string into a PG bytea field as follow:

<?php
$escaped_data = str_replace(array("\\\\", "''"), array("\\", "'"), pg_escape_bytea($data));
/* and later unescape the escaped data from the bytea field with following to get the original binary data */

$original_data = pg_unescape_bytea($escaped_data));
?>

more details at: http://archives.postgresql.org/pgsql-php/2007-02/msg00014.php
Хејли Вотсон
пред 8 години
PostgreSQL 9.0 introduced a new hexadecimal-based representation for bytea data that is preferred over the escaping mechanism implemented by this function.

<?php
function pg_escape_byteahex($binary)
{
    return "E'\\\\x".bin2hex($binary)."'";
}
?>
Mike-RaWare
пред 15 години
To prevent any problems with encoding you could use hexadecimal or base64 input to save and retrieve data to the database:

<?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 = bin2hex( $data );
  
  // Insert it into the database
  pg_query( "INSERT INTO gallery (name, data) VALUES ('Pine trees', decode('{$escaped}' , 'hex'))" );

  // Get the bytea data
  $res = pg_query("SELECT encode(data, 'base64') AS 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 base64_decode($raw);
?>
ynzhang од lakeheadu од ca
пред 1 година
this method des the same as pg_escape_bytea have fun with it:

public function escape_bytea($data) {
        $escaped = '';

        for ($i = 0; $i < strlen($data); $i++) {
            $char = $data[$i];
            $ascii = ord($char);

            $escaped.= ($ascii < 32 || $ascii > 126 ? sprintf('\\%03o', $ascii) : ($char == '\\' ? '\\\\' : $char) );
        }
        return $escaped;
    }
tabflo на gmx точка at
пред 22 години
to unescape_bytea use stripcslashes(). If you need to escape bytea and don't have pg_escape_bytea() function then use:

<?php
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;
}
?>
dmitry dot sushilov at gmail dot com
12 години пред
using  pg_escape_bytea without 'E' escape tag
<?php 
  // Die Binärdaten maskieren
  $escaped = pg_escape_bytea($data);

  // und in die Datenbank einfügen (falsch/wrong)
  pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', E'$escaped')");

  // und in die Datenbank einfügen (richtig/right)
  pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', '$escaped')");
?>
Mocha
пред 16 години
If you're getting errors about nonstandard use of \\ in a string literal, then you need to escape the encoded bytea as follows:

<?php
$escaped = pg_escape_bytea($data);
pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', E'$escaped'::bytea)");
?>
gglockner AT NOSPAMdwaffler DOT com
пред 23 години
if you need to change back bytea from the db to normal data, this will do that:

<?php
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
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.