2015-11-04 666 views
-1

我需要存储:PHP数组转为二进制数据?

array(1,2,3,4,5); 

到一个MySQL的blob。

如何将此数组转换为二进制数据?

+0

目的是什么? –

+1

你的问题显示一点努力。 – dan08

+0

@ dan08如果你检查修订版本,你会发现他的问题不是如何存储blob文件,而是为什么/如何存储更大量的信息...... – Bonatti

回答

2

这主要取决于您如何使用这些信息。 ID通常用于识别资源,因此必须是唯一的,而不是空的和可索引的。

由那些标准不使用作为blob。

主要是因为按内容搜索比本地变量慢。此外,SQL数据库对表的内容进行排序以确保更快的查询。

如果您需要的仅仅是存储信息,然后使用另一个ID来标识此资源(并且它们可以轻松地解析为字符串/数字,那么不要使用blob)。二进制文件通常每个字符使用8个字节。一个数字可以使用较少的总内存来包含相同的信息。例如,1902334123(随机键盘粉碎)在硬盘中使用10 * 8 = 80个字节,而一个32位有符号整数可以容纳它。

最后,如果你需要的就是存储一些数据单位是什么,什么是有顺序的varchar您的问题将被解读为字符串,因为它可以解决你的问题

+0

你提出了一些有关内存的优点我没有考虑。我并不特别将json_encoding存储起来,因为它看起来很sl but,但在内存消耗方面似乎是正确的。 –

+0

不仅内存消耗(因为在存储VARCHAR时,使用不当的编码可能会使用该值或更多),但是会丢失本地映射索引和算法,允许使用大量可能的单元对大量查询进行排序并尽可能少地提供响应。想象一下,10万个按字母排序的句子......如果你想“查询*以x开始”,并且在0到500行以v开头,你甚至不需要看它们......但是如果你有文件,你需要打开一个阅读每一个 – Bonatti

0

可以转换成JSON并存储到数据库:

json_encode($array); 

,当你从数据库返回:倒投票

json_decode($array); 
相关问题