我正在使用一个foreach循环,它将变量$thread_id分配给lastInsertId()的值。
然后,$thread_id 将插入到申请人表中。
我遇到的问题是它将循环中的最后一个值插入到所有行中。但奇怪的是,当我将 $thread_id 输出到控制台时,每次循环迭代时它都会显示不同的值。
例如,当我在控制台中输出 $thread_id 时,它显示这个
1,2,3,4,5,6
然后当我查看申请人表中的所有行时,我看到这个
666666
我真的很困惑为什么会发生这种情况。如果有人能帮助我解决这个问题,我将不胜感激。下面是我的代码。
$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 ]);
}
}
有人解决了你的错误,但除此之外,为什么? 您使用 lastinsertId() 更新行中的字段; 刚插入后。 您应该为此定义一个字段,以便 mysql 自动为您执行此操作。