gpt4 book ai didi

php - 在循环中插入 sql 查询是好事还是坏事?

转载 作者:可可西里 更新时间:2023-10-31 23:11:12 24 4
gpt4 key购买 nike

我有一个用户列表,需要使用 foreach 循环对其进行迭代,并为数据库表中的每个新行插入到表中。

$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);
}

所以使用上面给出的插入查询是

  1. 好的做法或坏的做法,
  2. 我应该在每次执行插入查询后设置任何延迟吗?
  3. 这样做的利弊是什么?

谢谢

最佳答案

在您的情况下,使用这样的查询是一种很好的做法。无论如何,您都必须插入一个用户列表,因此您将不得不处理许多查询。没有办法解决这个问题!

我不知道您为什么要在每次插入后延迟。这些方法是同步调用,因此您的代码在执行查询期间无论如何都会“暂停”。所以延迟它只会延迟你的代码,而没有任何进展。

因此您的循环在执行查询时不会继续。所以不要故意延迟你的代码。

另一种方法是执行一个查询。

$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;

这应该是这样的查询:

INSERT INTO `homework.comments` ( `id`, `name` )
VALUES ('1', 'John'),
('2', 'Jeffrey'),
('3', 'Kate');

(顺便说一下,我对您的 $users 对象和您的表结构做了一些假设。但我相信您明白了)

关于php - 在循环中插入 sql 查询是好事还是坏事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com