我想将facebook的朋友存入一张桌子。以下代码的结果显示只插入了一条记录。这不是我的循环的问题,因为我回应了这个名字,它都出现了。
foreach($user_friends['data'] as $friend){
//echo $friend['name'] . "</br>";
$userImg = "https://graph.facebook.com/".$friend['id']."/picture?width=200&height=200";
$friendsName = $friend['name'];
$stmt3 = $db->prepare("INSERT INTO allfriend(`uId`,`name`,`img`,`friendOf`) VALUES (?,?,?,?)");
$stmt3->bind_param('ssss', $user_fbid, $friendsName, $userImg, $user_fbid);
$stmt3->execute();
}
答案 0 :(得分:0)
您稍微滥用了准备/绑定功能。您只需准备一次,但每次使用后都需要重置语句。
此外,您应该检查您的陈述是否失败。如果你这样做,你可能会发现为什么事情可能与你期望的不同。
您的列friend.uID
是否可能实际上是主键?您显示的代码尝试将相同的值插入多行。那可能是你的问题。
试试这个:
$stmt3 = $db->prepare
("INSERT INTO allfriend(`uId`,`name`,`img`,`friendOf`) VALUES (?,?,?,?)")
|| die "prepare failed: ". $db->error;
foreach($user_friends['data'] as $friend) {
//echo $friend['name'] . "</br>";
$userImg = "https://graph.facebook.com/".$friend['id']."/picture?width=200&height=200";
$friendsName = $friend['name'];
$stmt3->bind_param('ssss', $user_fbid, $friendsName, $userImg, $user_fbid)
|| die "bind_param failed " . $db->error;
$stmt3->execute()
|| die "execute failed " . $db->error;
$stmt3->reset()
|| die "reset failed " . $db->error;
}