【问题标题】:Why can't I insert 14 rows at one time into DB为什么我不能一次将 14 行插入 DB
【发布时间】:2020-05-04 22:42:11
【问题描述】:

我使用MVC模型,CodeIgniter框架。当我尝试插入更少(如 9 或 10)行时,我尝试将 14 行插入我的数据库。我不明白其中的逻辑。 $data 数组接受整个 14 行,但由于某种原因,数据库不接受它。

这是控制器:

public function saveFinalShifts(){        
        $data = array();

        $newDate= $this->input->post('week');
        $sunday = $this->Shifts_model->getStartDate($newDate);

        $dates = array_fill(0,14,$sunday);

        $days = $this->input->post('day[]');
        $times = $this->input->post('time[]');
        $worker_names = $this->input->post('worker_name[]');

        if(is_array($dates)){
        foreach ($dates as $key => $date){
            $data[] =  array (
                'date' => $date,
                'day' => $days[$key],
                'time' => $times[$key],
                'worker_name' => $worker_names[$key],
                );
            }
        }

            $this->session->set_flashdata('success', 'Submitted!');
            $this->Shifts_model->saveFinalShifts($data);
            redirect(base_url("/Shifts/manageShifts"));

    }

这是我的模特:

public function saveFinalShifts($data) {
        $this->db->db_debug = FALSE;
        $error = NULL;
        if (!$this->db->insert_batch('final_shifts', $data)) {
            $error = $this->db->error();
        }
        return $error; 
    }

当我尝试:echo '<pre>';print_r($data); die;

可以看到,14 行中的每一行都在 $data 数组中。

Array
(
    [0] => Array
        (
            [date] => 2020-05-10
            [day] => sunday
            [time] => morning
            [worker_name] =>victoria
        )

    [1] => Array
        (
            [date] => 2020-05-10
            [day] => monday
            [time] => morning
            [worker_name] => victoria
        )

    [2] => Array
        (
            [date] => 2020-05-10
            [day] => tuesday
            [time] => morning
            [worker_name] => victoria
        )

    [3] => Array
        (
            [date] => 2020-05-10
            [day] => wednesday
            [time] => morning
            [worker_name] => victoria
        )

    [4] => Array
        (
            [date] => 2020-05-10
            [day] => thursday
            [time] => morning
            [worker_name] => victoria
        )

    [5] => Array
        (
            [date] => 2020-05-10
            [day] => friday
            [time] => morning
            [worker_name] => victoria 
        )

    [6] => Array
        (
            [date] => 2020-05-10
            [day] => saturday
            [time] => morning
            [worker_name] => victoria 
        )

    [7] => Array
        (
            [date] => 2020-05-10
            [day] => sunday
            [time] => evening
            [worker_name] => victoria
        )

    [8] => Array
        (
            [date] => 2020-05-10
            [day] => monday
            [time] => evening
            [worker_name] => victoria
        )

    [9] => Array
        (
            [date] => 2020-05-10
            [day] => tuesday
            [time] => evening
            [worker_name] => victoria 
        )

    [10] => Array
        (
            [date] => 2020-05-10
            [day] => wednesday
            [time] => evening
            [worker_name] => victoria
        )

    [11] => Array
        (
            [date] => 2020-05-10
            [day] => thursday
            [time] => evening
            [worker_name] => victoria
        )

    [12] => Array
        (
            [date] => 2020-05-10
            [day] => friday
            [time] => evening
            [worker_name] => victoria
        )

    [13] => Array
        (
            [date] => 2020-05-10
            [day] => saturday
            [time] => evening
            [worker_name] => victoria
        )

)

【问题讨论】:

  • 如果有问题,你不想看看你的$error变量吗?目前,这被忽略了。如果您要检查错误,您还需要处理它们,即显示它们或记录它们。另外,您的 PHP 和/或 Web 服务器日志也可能会告诉您发生了什么,您看过它们了吗?

标签: codeigniter model-view-controller


【解决方案1】:

尝试对数组进行分块。

foreach(array_chunk($data, 5) as $chunk){
     $this->db->insert_batch('final_shifts', $chunk);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多