OM *_*ity 9 php sql foreach for-loop insert
我有一个用户列表,需要使用foreach循环进行迭代,并插入到db表中每个新行的表中.
$data['entity_classid'] = $classid;
$data['notification_context_id'] = $context_id;
$data['entity_id'] = $entity_id;
$data['notification_by'] = $userid;
$data['actionid'] = $actionid;
$data['is_read'] = 0;
$data['createdtime'] = time();
foreach($classassocusers as $users){
$data['notification_to'] = $users->userid;
$DB->insert_record('homework.comments',$data,false);
}
Run Code Online (Sandbox Code Playgroud)
所以使用上面给出的插入查询是
谢谢
在您的情况下使用这样的查询是一个很好的做法.您无论如何都必须插入用户列表,因此您必须处理许多查询.没办法解决这个问题!
我不知道你为什么要在每次插入后放置延迟.这些方法是同步调用,因此在执行查询期间,代码将"暂停".所以推迟它只会延迟你的代码而没有任何进展.
因此,在执行查询时,您的循环将不会继续.所以不要故意延迟你的代码.
另一种方法是执行一个查询.
$user_data = "";
foreach($classassocusers as $users) {
$user_data .= "('" . $users->userid . "', '" . $users->name . "'), ";
}
$user_data = substr($user_data, 0, strlen($user_data) - 2);
$query = "INSERT INTO `homework.comments` ( `id`, `name` )
VALUES " . $user_data;
Run Code Online (Sandbox Code Playgroud)
那应该是这样的查询:
INSERT INTO `homework.comments` ( `id`, `name` )
VALUES ('1', 'John'),
('2', 'Jeffrey'),
('3', 'Kate');
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,我对你的$users对象和你的表格结构做了一些假设.但我相信你能理解这个想法)
| 归档时间: |
|
| 查看次数: |
3613 次 |
| 最近记录: |