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


How to store an Array in Database (PHP/MySQL)?

我正在做一些事情,需要我存储一个对应于每个用户的 id 数组。

每个

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

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

我正在寻找更好的方法来做到这一点 - 谢谢!

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

这是一种多对多关系。这通常通过使用连接表来处理。

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

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

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

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

使用序列化实际上有很多问题,如果在不久的将来弃用它,我不会感到惊讶,你最好只使用 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页面的引述:

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