我希望执行多个update语句,而不是单独执行它们,以避免多个DB hits.Following是代码。
$updateStatement = '';
foreach ($users as $user) {
$i++;
$updateStatement = $updateStatement. "update users set packet_seqno = '".$i."' where id = ".$user->id . '; ';
}
\DB::statement($updateStatement);但是,它不工作,并且抛出错误。
SQLSTATE42000:语法错误或访问冲突: 1064您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得使用“update”的正确语法。
你能帮我修一下吗?
这是$updateStatement的转储。
"update ppt_import_mortgage1 set packet_seqno = '1' where id = 37; update ppt_import_mortgage1 set packet_seqno = '2' where id = 39; update ppt_import_mortgage1 set packet_seqno = '3' where id = 40; update ppt_import_mortgage1 set packet_seqno = '4' where id = 42; update ppt_import_mortgage1 set packet_seqno = '5' where id = 43; update ppt_import_mortgage1 set packet_seqno = '6' where id = 44; update ppt_import_mortgage1 set packet_seqno = '7' where id = 45; update ppt_import_mortgage1 set packet_seqno = '8' where id = 46; update ppt_import_mortgage1 set packet_seqno = '9' where id = 47; update ppt_import_mortgage1 set packet_seqno = '10' where id = 48; "发布于 2015-08-12 10:35:58
如果你想用雄辩,你可以简单地这样做:
foreach ($users as $user) {
$i++;
User::where('id',$user->id)->update(['packet_seqno' => $i]);
}或更好:
foreach ($users as $user) {
$i++;
$user->update(['packet_seqno' => $i]);
}发布于 2015-08-12 09:50:02
试试这个:
$updateStatement = '';
foreach ($users as $user) {
$i++;
$updateStatement = "update users set packet_seqno = '".$i."' where id = ".$user->id;
\DB::update(\DB::raw($updateStatement));
}看,如果有帮助的话。
https://stackoverflow.com/questions/31960695
复制相似问题