我正在处理一些需要我存储与每个用户相对应的ID的内容。
每位用户都需要选择多个项目(最少1个),每个项目都有唯一的ID。我有一些这些ID,但我不太确定如何将它们存储在数据库中。
现在,我正在使用php serialize()
来存储数组,但我发现这是低效的,因为我必须使用php而不是sql来查询数据。
我正在寻找更好的方法 - 谢谢!
答案 0 :(得分:2)
不要使用序列化格式(如serialize
或JSON) - 它为您提供无法在SQL级别查询的数据。
这是many-to-many关系。这通常通过使用junction table来处理。
创建一个新表。它应该有两列,例如user_choosing
和user_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页面的引用:
从数据库解码字符串时,请确保输入在输入数据库时使用正确的字符集进行编码。