在php中爆炸

Muh*_*zmi 1 php mysql explode

在我的表'用户'中有'朋友',

像这样 :

+----+------+---------+
| id | name | friends |
+----+------+---------+
|  1 | a    | 0,1,2   |
|  2 | b    | 0,1,3   |
|  3 | c    | 0,1     |
+----+------+---------+
Run Code Online (Sandbox Code Playgroud)

如何使用explode函数逐个获取由逗号(,)分隔的朋友ID(不是0,1,2);

如何选择ID?(例):

$sql = Select id from users where id = (exploded)

if (mysql_num_rows($sql) > 0 ) {
  $TPL->addbutton('Unfriend');
}else{
  $TPL->addbutton('Add as Friend')
}
Run Code Online (Sandbox Code Playgroud)

Lix*_*Lix 5

这里的解决方案实际上是数据库结构的细微变化.我建议您创建一个"多对多"关系表,其中包含用户引用的所有用户朋友.

+---------+-----------+
| user_id | firend_id |
+---------+-----------+
|       1 |         2 |
|       1 |         3 |
|       1 |         4 |
|       2 |         1 |
|       2 |         5 |
+---------+-----------+
Run Code Online (Sandbox Code Playgroud)

如果要在一个字段中存储值列表,那么这是数据库设计不是最佳的第一个迹象.如果你需要搜索一个数值,那么最好在该字段上放置一个索引以提高效率并使数据库为你工作而不是相反的方式:)

然后,要确定用户是否是某人的朋友,您将查询此表 -

SELECT * FROM users_friends WHERE 
  `user_id` = CURRENT_USER AND `friend_id` = OTHER_USER
Run Code Online (Sandbox Code Playgroud)

要获得某个用户的所有朋友,你会这样做 -

SELECT * FROM users_friends WHERE `user_id` = CURRENT_USER
Run Code Online (Sandbox Code Playgroud)