如何存储Facebook用户';使用PHP在MySQL中创建好友列表?

如何存储Facebook用户';使用PHP在MySQL中创建好友列表?,php,mysql,arrays,facebook,facebook-graph-api,Php,Mysql,Arrays,Facebook,Facebook Graph Api,如何使用PHP在MySQL中存储Facebook用户的好友列表 我可以使用下面的PHP代码获取并打印用户的好友列表吗 //get friends list $friends_list = file_get_contents('https://graph.facebook.com/me/friends?access_token=' . $atoken ); $friends_list_array = json_decode($friends_list,true); //convert so

如何使用PHP在MySQL中存储Facebook用户的好友列表

我可以使用下面的PHP代码获取并打印用户的好友列表吗

//get friends list
$friends_list = file_get_contents('https://graph.facebook.com/me/friends?access_token=' . $atoken );

$friends_list_array  = json_decode($friends_list,true); 

//convert so that store in mysql 
$my_friends = implode("," , $friends_list_array['data']);
    echo "</br> my friends" . $my_friends;

//result my friendsArray,Array,Array,Array,Array,Array,Array,Array.....
//获取好友列表
$friends\u list=文件\u获取\u内容('https://graph.facebook.com/me/friends?access_token=“.$atoken);
$friends\u list\u array=json\u decode($friends\u list,true);
//转换,以便存储在mysql中
$my_friends=内爆(“,”,$friends_list_数组['data');
回声“
我的朋友们”$我的朋友们; //结果我的朋友数组,数组,数组,数组,数组,数组,数组,数组。。。。。

如何在MySQL中存储好友列表?

var\u dump($friends\u list\u array)
开始,这样您就可以查看实际使用的内容。然后编写一个循环,获取所需的相关数据并将其插入数据库

大致如下:

get the data
decode the data
create an empty array "arr"
foreach data as row
    do something with row, output should be something like
    "(123, 'John Smith', .....)"
    add this value to "arr"
implode "arr" with ","
add the start of the query ("insert into... ...values")
run the query.

然而,这可能是最好避免的。人们的朋友总是在变化,除非他们同意,否则他们可能不希望您存储他们的数据。

var\u dump($friends\u list\u array)
开始,这样您就可以看到您实际使用的数据。然后编写一个循环,获取所需的相关数据并将其插入数据库

大致如下:

get the data
decode the data
create an empty array "arr"
foreach data as row
    do something with row, output should be something like
    "(123, 'John Smith', .....)"
    add this value to "arr"
implode "arr" with ","
add the start of the query ("insert into... ...values")
run the query.

然而,这可能是最好避免的。人们的朋友随时都在变化,除非他们同意,否则他们可能不希望您存储他们的数据。

试试下面的方法。我还没有测试下面的测试

$sql_string = "insert into friends_table(friend_id,friend_name) values";
$insertValues = array();
$friends_list_array = json_decode(....)['data'];
foreach($friends_list_array as $friends){
    $insertValues[] = "({$friend['id']}, {$friend['name']})";
}
if (mysql_query($sql_string . implode(",", $insertValues) . ";")){
    //added all the data..
}else{
    //some error..
} 
注:Kolink指出的问题非常有效。对于你正在做的事情,可能还有其他的出路


更新

如果需要将朋友的所有ID存储在一个字段中(这实际上是个坏主意,请参见下文),那么必须使用JSON序列化朋友列表数据(可能是),并将其存储为字符串

$friends_list_array = json_decode(....)['data'];
$friends_id = array_map(function($friend){ return $friend['id'];},$friends_list_array);
$friends_list_json = json_encode($friends_id);
if (mysql_query("insert into friends_table(user, friends) values ('$curUserId','$friends_list_json';")){
    //added all the data..
}else{
    //some error..
} 

在单个字段中存储序列化数据实际上是个坏主意,除非您同时访问/修改整个列表。更好的选择是跨行分布数据。

试试下面的方法。我还没有测试下面的测试

$sql_string = "insert into friends_table(friend_id,friend_name) values";
$insertValues = array();
$friends_list_array = json_decode(....)['data'];
foreach($friends_list_array as $friends){
    $insertValues[] = "({$friend['id']}, {$friend['name']})";
}
if (mysql_query($sql_string . implode(",", $insertValues) . ";")){
    //added all the data..
}else{
    //some error..
} 
注:Kolink指出的问题非常有效。对于你正在做的事情,可能还有其他的出路


更新

如果需要将朋友的所有ID存储在一个字段中(这实际上是个坏主意,请参见下文),那么必须使用JSON序列化朋友列表数据(可能是),并将其存储为字符串

$friends_list_array = json_decode(....)['data'];
$friends_id = array_map(function($friend){ return $friend['id'];},$friends_list_array);
$friends_list_json = json_encode($friends_id);
if (mysql_query("insert into friends_table(user, friends) values ('$curUserId','$friends_list_json';")){
    //added all the data..
}else{
    //some error..
} 

在单个字段中存储序列化数据实际上是个坏主意,除非您同时访问/修改整个列表。更好的选择是跨行分布数据。

好友连接将返回好友的
名称
id
封装在
数据
数组中。因此,在
内爆之前,您需要在阵列中执行一步并收集ID:

$friends_list = file_get_contents('https://graph.facebook.com/me/friends?access_token=' . $atoken );
$friends_list_array  = json_decode($friends_list,true);
$arr= $friends_list_array['data'];
$friend_ids_arr = array();
foreach($arr as $friend) {
    $friend_ids_arr[] = $friend['id'];
}
$friend_ids = implode("," , $friend_ids_arr);
echo $friend_ids; // output: id1,id2,id3...etc

friends
连接将返回朋友的
name
id
封装在
data
数组中。因此,在
内爆之前,您需要在阵列中执行一步并收集ID:

$friends_list = file_get_contents('https://graph.facebook.com/me/friends?access_token=' . $atoken );
$friends_list_array  = json_decode($friends_list,true);
$arr= $friends_list_array['data'];
$friend_ids_arr = array();
foreach($arr as $friend) {
    $friend_ids_arr[] = $friend['id'];
}
$friend_ids = implode("," , $friend_ids_arr);
echo $friend_ids; // output: id1,id2,id3...etc

谢谢,我将检查它,并在执行此操作之前显示消息:)谢谢,我将检查它,并在执行此操作之前显示消息:)我想将数据存储在一个字段中,例如一个字段用于用户\u朋友\u id第二个字段用于用户\u朋友\u名称是否有任何方法可以这样做?这就是上面的代码所做的-一个字段用于id,第二个字段用于名称。或者我误解了你的意思?很抱歉,我的意思是一个字段用于所有ID,如id1、id2、ID3。这实际上是个坏主意,除非你一次访问/修改所有ID。我将内联回答。我想将数据存储在一个字段中,比如一个字段用于用户\u朋友\u id,第二个字段用于用户\u朋友\u姓名,有没有办法做到这一点或这一点?这就是上面的代码所做的-一个字段用于id,第二个字段用于姓名。或者我误解了你的意思?很抱歉,我的意思是一个字段用于所有ID,如id1、id2、ID3。这实际上是个坏主意,除非你一次访问/修改所有ID。我会在线回答。好主意,它解决了我的问题,令人惊讶,多么简单和棘手,谢谢你,易卜拉欣,你能不能请我们在聊天室或其他地方谈谈,欢迎你。你可以通过已经从你的个人资料中获得的链接联系到我:)你的SO职业页面也很好,再次感谢:)好主意它解决了我的问题令人惊讶的是多么简单和棘手谢谢你这么多Ibrahim你能不能请我们在聊天室或其他地方谈谈欢迎你。您可以通过已从您的个人资料中获得的链接与我联系:),您的SO职业页面也很好,再次感谢:)