php - 在循环内执行 SQL SELECT 查询

标签 php mysql codeigniter-3

我有一个表leave_muster,我必须在每个新月开始时更新上个月的所有记录。

我的代码

public function sync()
    {
        $pre_month = (int)date('m') - 1;

        $data = $this->Leave_muster_model->get_by_month($pre_month);

        $updated_data = [];

        foreach ($data as $key => $value) {

            // Fetch each employee details to perform some check
            // Then update the array and 

            $updated_data[$key] = [
                'emp_id'                   => $value->emp_id,
                'accumulated_leaves'       => 0.0,
                'total_accumulated_leaves' => 0.0,
                'leave_taken'              => 0.0,
                'salary_deducted_days'     => 0.0,
                'leave_balance'            => 0.0,
                'month'                    => date('m'),
                'year'                     => date('Y'),
                'created_date'             => date('Y-m-d')
            ];
        }

    }
}

在上面的代码中,我必须在更新叶子之前获取员工详细信息以执行一些检查,所以我有两种方法

  1. 在任何更新之前在循环中获取员工详细信息 执行检查。
  2. 获取循环外的所有员工详细信息 一个数组,然后通过执行检查的员工 ID 获取员工

我想知道哪种方法更好,因为我知道在未来的任何给定时间点,表格中都不会有数百万名员工。

语言:PHP
框架:Codeigniter

最佳答案

通常,我认为对数据库的调用很昂贵;我努力减少脚本执行的数据库调用次数。因此,我可能会加载所有员工,然后通过循环运行。

这假设不会有很多员工。在这种情况下,您会遇到内存问题。

关于php - 在循环内执行 SQL SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55807148/

相关文章:

PHP 忘记密码脚本不发送电子邮件

php - 如何使用 php 从另一个主机服务器检索 http 页面并检测重定向

php - 使用 PHP 将数组数据存储到 mySQL 数据库

php - 一维数组提交后变成多维数组

php - 想要针对特定​​列值输出列值

php - PHP 中 MySQL SELECT 查询的回显结果

php - 使用 while 循环和 if 语句从不同表中获取数据

php - 获取两年之间的月份并获取每年所有月份的总和

mysql - 当 T1 有许多 T2 且条件在 T2 中时,将 T2 连接到 T1 而不是将 T1 连接到 T2 是否更有效?或者是一样的?

php - 代码点火器 : View Table Data from Double Relation Table