gpt4 book ai didi

php - 使用 codeigniter 在数据库中插入数据数组的有效方法

转载 作者:行者123 更新时间:2023-11-29 00:10:03 25 4
gpt4 key购买 nike

我在数据库中有以下表字段:

id, user_id, permission_id, value, created.

我有一个数组的一个结果,它一次可能包含 20 多个不同的值。整个包含 permission_id 值,其余字段相似。像 user_id 将只是一个将与每个 permission_id 相同的插入,并且 value 将始终是 1created 与包含当前日期和时间的内容相同。

现在我可以使用以下代码插入数据库:

 $user_perms=$this->input->post('permissions'); 

foreach($user_perms as $perms) {

$userPerms['permission_id']=$perms;
$userPerms['user_id']=$uid;
$userPerms['value']=1;
$userPerms['created']=date("Y-m-d H:i:s");
$this->admins->insertPerms($userPerms);
}

现在运行得很好。但我想让它更高效、更快速。您可能已经注意到,我在 foreach 循环中运行了 insert query 。因此,当用户在后端单击提交时,查询可能一次运行 30 多次。这不是一个好主意。

因此,如何在不循环的情况下一次插入数据?

最佳答案

您可以使用 $this->db->insert_batch() 一次插入多行:

$this->db->insert_batch(
'table_name',
array(
// first row:
array('permission_id' => 1, 'user_id' => 1, 'value' => 1, 'created' => '...'),
// second row:
array('permission_id' => 2, 'user_id' => 1, 'value' => 1, 'created' => '...')
)
);

(阅读更多 here)

但是,您显然不能以这种方式避免 foreach 循环,因为您需要以某种方式创建要传递给它的数据数组...
因此,另一种优化它的方法是在事务中运行这些插入。这将(至少就 SQL 而言)相当于在单个查询中同时插入它们,因为 COMMIT 是最昂贵的操作,因此 1 次提交比 20 次提交快。

关于php - 使用 codeigniter 在数据库中插入数据数组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614276/

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