如何在PostgreSQL中存储和检索PHP serialize()?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PostgreSQL中存储和检索PHP serialize()?相关的知识,希望对你有一定的参考价值。

我刚刚从mysql转换为PostgreSQL。在PostgreSQL中,我的字段(jobInfo)是(bytea)格式的blob。

SELECT folderName, jobInfo
FROM jobs

在mySQL中,该字段以可以反序列化的字符串形式出现。但是,当我从postgres中读取数据时,它看起来像这样:

\ Kst 13 A 1353 Ahbaaaaa 1373 606用户自己的经历17456657273669 Fattaaaaaaaaaaaaaaaaaaa 42 42 0223 Baaaaaaaaaaaaaaaaaaa [.....]

有没有办法在php或postgres中解码回到序列化的文本字符串?

更新每个请求,这是用于最初创建mySQL Blob字段的代码:

$theJobInfo = serialize($theJobInfo);

和SQL查询:

UPDATE `jobs` SET `jobInfo` = theJobInfo
WHERE `folderName` = 'myFolderName'
答案

您可以轻松地转换为byteatext,就像这样

SELECT convert_from('foo'::bytea, 'UTF8');

但是,我不认为这是相关的。

你正在使用serailize() function of php

请注意,这是一个二进制字符串,可能包含空字节,需要像这样存储和处理。例如,serialize()输出通常应存储在数据库中的BLOB字段中,而不是CHARTEXT字段中。

该函数返回二进制数据。同样,unserialize()期望二进制数据。如果你不想在php中使用二进制数据,你可以使jobs.jobinfo成为jsonb类型并将json_encode()的结果发送给它,然后从它发送json_decode() ..

另一答案

此代码从postgres ByteA字段的内容中检索序列化字符串:

$serializedString = pg_unescape_bytea($contentsOfPostGresByteAField);

感谢Sergey Pashkov提示!

以上是关于如何在PostgreSQL中存储和检索PHP serialize()?的主要内容,如果未能解决你的问题,请参考以下文章

使用 NodeJS,如何使用 Spring Security OAuth2 制作的 JWT 检索存储在 PostgreSQL 中的会话信息?

如何使用 PHP 从 MySQL 数据库中存储和检索图像?

如何从 MySQL 数据库中存储和检索图像并使用 Php 将其显示在 html 中? [复制]

如何在 POSTGRESQL 中从两个不同的数据库中检索数据

如何在 $_SESSION 中存储和检索错误数组

看大数据最大技术难关之模糊检索,PostgreSQL如何攻克