为什么只有lastinsertid在foreach中插入db?

时间:2015-06-22 03:23:59

标签: php mysql

我正在使用foreach循环,它将变量$ thread_id赋值给lastInsertId()的值。

然后将$ thread_id插入到申请人表中。

我遇到的问题是它将循环中的最后一个值插入到所有行中。但奇怪的是当我将$ thread_id输出到控制台时,每次循环迭代时它都会显示不同的值。

作为一个例子,当我在控制台中输出$ thread_id时,它显示了这个

1,2,3,4,5,6-

然后当我查看申请人表格中的所有行时,我看到了这个

6 6 6 6 6 6

我真的很困惑为什么会这样。如果有人能帮我解决这个问题,我会非常感激。以下是我的代码。

$msg_table_insert = $db->prepare("INSERT INTO msg_messages (
                  sender_id,recipient_id,msg ) VALUES (
                  :sender_id, :recipient_id, :msg)");

        $applicant_update_query = $db->prepare("UPDATE applicants SET thread_id = :thread_id ");


foreach($applicants as $applicant) 
{

 if($thread_id == 0){
    $msg_table_insert->execute(
        [':sender_id'   => $applicant_array[SENDER_ID], 
        ':recipient_id' => $applicant_array[RECIPIENT_ID], 
        ':msg'          => $templated_msg_body]);

    $thread_id = $db->lastInsertId();

    $applicant_update_query->execute([':thread_id' =>  $thread_id ]);
}
    }

1 个答案:

答案 0 :(得分:0)

有人解决了你的错误,但除此之外,为什么?使用lastinsertId()更新行中的字段;刚刚插入后。你应该为它定义一个字段,以便mysql自动为你做。