我正在使用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 ]);
}
}
答案 0 :(得分:0)
有人解决了你的错误,但除此之外,为什么?使用lastinsertId()更新行中的字段;刚刚插入后。你应该为它定义一个字段,以便mysql自动为你做。