无法使用循环在mysqli中插入多个数据

时间:2014-05-31 17:41:47

标签: php mysql mysqli

我想将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();

}

1 个答案:

答案 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;

}