如何在数据库中存储数组(PHP / MySQL)?

时间:2015-03-06 05:37:09

标签: php mysql arrays

我正在处理一些需要我存储与每个用户相对应的ID的内容。

每位用户都需要选择多个项目(最少1个),每个项目都有唯一的ID。我有一些这些ID,但我不太确定如何将它们存储在数据库中。

现在,我正在使用php serialize()来存储数组,但我发现这是低效的,因为我必须使用php而不是sql来查询数据。

我正在寻找更好的方法 - 谢谢!

2 个答案:

答案 0 :(得分:2)

不要使用序列化格式(如serialize或JSON) - 它为您提供无法在SQL级别查询的数据。

这是many-to-many关系。这通常通过使用junction table来处理。

创建一个新表。它应该有两列,例如user_choosinguser_chosen。您可以使用组合键或使用单独的列来保存主ID。

这两列都应该是用户表上的外键。

然后,当您获得用户数组时,循环遍历它并为每个用户插入一个新行(user_choosing列是提交数据的用户)。

然后,您可以使用JOINS将数据从数据库中取回,并保持关联。

答案 1 :(得分:1)

使用序列化实际上存在很多问题,如果在不久的将来它被弃用,我不会感到惊讶,你最好只使用json_encode / json_decode。

http://php.net/manual/en/function.json-encode.php

http://php.net/manual/en/function.json-decode.php

使用浮动等类型时,json_encode不仅更安全,而且更快更干净。

<强>更新

来自json_encode页面的引用:

  

从数据库解码字符串时,请确保输入在输入数据库时​​使用正确的字符集进行编码。