pg_unescape_bytea

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

pg_unescape_bytea 解码 bytea 类型的二进制数据

说明

pg_unescape_bytea(string $string): string

pg_unescape_bytea() 解码 PostgreSQL bytea 数据值。它返回解码后的字符串,可能包含二进制数据。

注意:

当您 SELECT 一个 bytea 类型时,PostgreSQL 返回以 '\' 为前缀的八进制字节值(例如 \032)。用户应该手动将其转换回二进制格式。

此函数需要 PostgreSQL 7.2 或更高版本。在 PostgreSQL 7.2.0 和 7.2.1 中,当您启用多字节支持时,bytea 值必须进行强制转换。例如 INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 或更高版本不需要强制转换。例外情况是,当客户端和后端字符编码不匹配时,可能存在多字节流错误。用户随后必须强制转换为 bytea 以避免此错误。

参数

string

包含要转换为 PHP 二进制字符串的 PostgreSQL bytea 数据的 string

返回值

包含解码数据的 string

范例

示例 #1 pg_unescape_bytea() 示例

<?php
// 连接到数据库
$dbconn = pg_connect('dbname=foo');

// 获取 bytea 数据
$res = pg_query("SELECT data FROM gallery WHERE name='Pine trees'");
$raw = pg_fetch_result($res, 'data');

// 转换为二进制并发送到浏览器
header('Content-type: image/jpeg');
echo
pg_unescape_bytea($raw);
?>

参见

添加注释

用户贡献的注释 3 个注释

5
liviu dot mirea at gmail dot com
13 年前
PostgreSQL 9.0 引入了 "hex" 作为编码二进制数据的新的默认格式。由于 "pg_unescape_bytea" 仅适用于旧的 "escape" 格式,因此您需要在执行 select 查询之前执行 pg_query('SET bytea_output = "escape";')。

更多详细信息请参见:https://postgresql.ac.cn/docs/9.0/static/datatype-binary.html

[编辑:最近的 PostgreSQL 版本支持解码 "hex" 格式。]
0
muralito at montevideo dot com dot uy
13 年前
解决方法是为用户在 postgres 数据库中配置一个属性,使 postgres 具有与旧的默认行为一致的行为。

ALTER USER username SET bytea_output = 'escape';

(或使用 pgadmin 界面)
-6
tiagopastorello at gmail dot com
16 年前
<?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