[英]How should I store the data of the liked pages by a user into Mysql database
我使用Facebook PHP SDK来获取用户喜欢的页面。
$liked = $facebook->api('/me/likes');
解码JSON后,我得到输出数组,如下所示:
Array (
[data] => Array (
[0] => Array ( [category] => Book [name] => Steve Jobs by Walter Isaacson [id] => 152707268157952 [created_time] => 2012-12-05T15:10:14+0000 )
[1] => Array ( [category] => Internet/software [name] => Evernote [id] => 30670583128 [created_time] => 2012-11-24T04:39:25+0000 )
[2] => Array ( [category] => Product/service [name] => HTC [id] => 112176482203770 [created_time] => 2012-11-15T06:36:59+0000 )
....
....
....
)
我想将用户喜欢的每个页面的类别和名称存储到数据库表中。 我想以这样的方式存储它,以便我可以有效地比较两个用户,并获得相互喜欢的页面。 例如:当用户想要将书籍与另一个用户进行比较时,用户可以获得相互喜欢的书籍。
我应该如何将数组中的数据存储到表中,以便以后可以使用它进行比较。
创建一个表( liked_pages
),其中包含您要存储的所有数据的列:
将数组中的数据存储在此表中。
然后给出两个user_ids(例如,假设为1
和2
),要找到相互喜欢的页面,您可以执行以下操作:
SELECT id FROM liked_pages
WHERE user_id IN (1,2)
GROUP BY id
HAVING COUNT(id) = 2
如果你想扩展它只能找到特定类别中的相互喜欢的页面(比如'books'),你可以添加一个额外的where子句category = 'books'
。
编辑:
要扩展您在注释中提出的问题,最佳做法是在数据库表中每行只存储一条记录,因为这允许您在检索数据时搜索和排序相关记录,这是数据库引擎优化的。
替代方法是序列化数组并为每个用户只存储一个条目,然后从数据库中检索数组,对其进行反序列化 ,然后在PHP中进行所有搜索/排序,但这样效率会降低。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.