当前位置:  开发笔记 > 编程语言 > 正文

在一行中将数​​组插入数据库

如何解决《在一行中将数​​组插入数据库》经验,为你挑选了2个好方法。

我想知道这是否可行?将数组插入数据库中的一个字段.

例如,我有一个标题,我希望只有一个id的标题,但它将在网站上使用.

使另一个表具有全局ID,然后另一个表与实际标题链接到具有全局ID的表相比,感觉有点不必要.

我只想拥有这样的东西

ID      TITLE
1       Array("english title", "nederlandse titel");

我正在使用PHP/MSYQL,所以如果它可行,请用这些语言解释.

哦,是的,我想我可以将它格式化,并使用split函数将其再次转换为数组.但是我想知道我是否可以立即将它存储为数组,我认为用户可能会输入具有相同格式的内容(百万分之一)



1> Owen..:

它是可行的:

$title = serialize($array);

然后解码:

$title = unserialize($mysql_data);

但正如所提到的,它首先真正减少了数据库的好处.我肯定建议使用多表或多列选项,具体取决于您希望支持的语言数量,以及该数字将来是否会发生变化.

编辑:dcousineau提到的一个好点(见评论)

有时,序列化输出,即使在转义之后,也会将字符抛入查询中,从而搞砸了.您可能希望将serialize()包装在base64_encode()调用中,然后在反序列化之前使用base64_decode().

调整了这些情况的代码:

$title = base64_encode(serialize($array) );
$title = unserialize(base64_decode($mysql_data) );



2> bmdhacks..:

这里真的只有两个合理的选择:

加入另一个表
专业人士:无限制语言中的无限制标题
缺点:加入开销在计算上更加昂贵,SQL在更新/插入等方面稍微复杂一些

多列
例如:TITLE_EN,TITLE_NL,TITLE_DE
pros:快速插入,选择等
缺点:语言数量有限,添加更多是ALTER TABLE

鉴于我们的两个选择,你通常应该选择第一个.除非您只处理无法并行化的大量交易,否则您绝对可以确保您永远不会添加语言,从长远来看,架构布局的额外灵活性将为您节省麻烦.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有