我一直使用以下数据库结构存储好友列表:
用户ID |朋友ID
我的问题是我有一个界面,允许他们从朋友列表中添加/删除用户,并且朋友列表应该在点击后保存。
那么我删除该用户ID的所有朋友,然后用保存的朋友列表重新填充数据库是否有意义?听起来有点适得其反,因为如果用户只添加一个用户,则会删除所有朋友并重新添加所有朋友。
答案 0 :(得分:3)
你可以删除所有然后重新填充,或者你可以存储朋友列表的初始状态,然后在用户编辑后与最终列表进行比较。
我建议您使用此功能array_diff($array1, $array2),执行以下操作:
$initial_list = array (1,2,3,4,5);
$list_after_edit = array (1,2,5,6);
$all_new_items = array_diff($list_after_edit,$initial_list);
foreach ($all_new_items as $item) {
// Add to database this item
}
$all_deleted_items = array_diff($initial_list,$list_after_edit);
// Execute this query:
$query = 'DELETE FROM table WHERE `User Id` = <some ID> AND `Friend Id` in (' . implode(',',$all_deleted_items) . ')';