如何在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'
您可以轻松地转换为bytea
和text
,就像这样
SELECT convert_from('foo'::bytea, 'UTF8');
但是,我不认为这是相关的。
你正在使用serailize()
function of php
请注意,这是一个二进制字符串,可能包含空字节,需要像这样存储和处理。例如,
serialize()
输出通常应存储在数据库中的BLOB
字段中,而不是CHAR
或TEXT
字段中。
该函数返回二进制数据。同样,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 中的会话信息?
如何从 MySQL 数据库中存储和检索图像并使用 Php 将其显示在 html 中? [复制]