You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter中以JSON格式插入数据?数据库3字段需逐行添加

没问题,我来帮你搞定CodeIgniter里的这两个需求——逐行添加数据和JSON格式插入。下面分步骤给你讲清楚,代码都是可直接复用的:

一、逐行添加数据(常规方式)

如果你的数据是从表单、数组等常规来源获取的,逐行插入的思路很简单:循环遍历每条数据,调用Model的插入方法即可。

1. 编写Model(数据操作层)

先创建一个处理数据库操作的Model,比如命名为DataModel.php:

<?php
class DataModel extends CI_Model {
    // 插入单条数据的方法
    public function insert_single_row($data) {
        // 替换成你的实际数据库表名
        return $this->db->insert('your_table_name', $data);
    }
}

2. 在Controller中调用逐行插入

在Controller里加载Model,然后循环处理每条数据:

<?php
class DataController extends CI_Controller {
    public function insert_rows() {
        // 加载Model
        $this->load->model('DataModel');

        // 假设这是你要插入的多行数据(可来自表单提交、外部接口等)
        $rows_to_insert = [
            ['field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3'],
            ['field1' => 'value4', 'field2' => 'value5', 'field3' => 'value6'],
            // 更多行...
        ];

        $success_count = 0;
        foreach ($rows_to_insert as $row) {
            // 调用Model的插入方法
            if ($this->DataModel->insert_single_row($row)) {
                $success_count++;
            } else {
                // 插入失败的处理,比如记录日志
                log_message('error', 'Failed to insert row: ' . print_r($row, true));
            }
        }

        // 返回结果提示
        echo "成功插入 $success_count 条数据";
    }
}
二、以JSON格式完成数据插入

如果是前端通过JSON格式传递数据(比如前后端分离场景),需要先接收并解析JSON,再进行逐行插入。

1. 前端发送JSON请求示例(可选)

前端可以用AJAX发送POST请求,Content-Type设为application/json:

// 示例:用fetch发送JSON数据
const rows = [
    {"field1": "json_val1", "field2": "json_val2", "field3": "json_val3"},
    {"field1": "json_val4", "field2": "json_val5", "field3": "json_val6"}
];

fetch('/index.php/DataController/insert_via_json', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        // 如果开启了CSRF保护,需要带上CSRF token,比如:
        // 'X-CSRF-Token': '你的CSRF token值'
    },
    body: JSON.stringify(rows)
})
.then(response => response.json())
.then(data => console.log(data));

2. 后端Controller接收并处理JSON

在Controller里编写处理JSON请求的方法:

<?php
class DataController extends CI_Controller {
    public function insert_via_json() {
        // 关闭默认输出缓冲,确保返回纯JSON
        $this->output->set_content_type('application/json');

        // 获取前端传来的JSON数据
        $json_raw = file_get_contents('php://input');
        $rows_data = json_decode($json_raw, true);

        // 验证JSON是否有效
        if (json_last_error() !== JSON_ERROR_NONE) {
            $this->output->set_output(json_encode([
                'status' => 'error',
                'message' => '无效的JSON数据'
            ]));
            return;
        }

        // 加载Model
        $this->load->model('DataModel');

        $success_count = 0;
        foreach ($rows_data as $row) {
            // 验证必要字段是否存在(替换成你的三个字段名)
            if (isset($row['field1'], $row['field2'], $row['field3'])) {
                $insert_data = [
                    'field1' => $row['field1'],
                    'field2' => $row['field2'],
                    'field3' => $row['field3']
                ];
                if ($this->DataModel->insert_single_row($insert_data)) {
                    $success_count++;
                }
            } else {
                $this->output->set_output(json_encode([
                    'status' => 'warning',
                    'message' => '部分数据缺少必填字段'
                ]));
                return;
            }
        }

        // 返回成功结果
        $this->output->set_output(json_encode([
            'status' => 'success',
            'message' => "成功插入 $success_count 条数据"
        ]));
    }
}

一些注意事项

  • CSRF保护:如果你的CodeIgniter开启了CSRF保护(默认开启),前端发送请求时需要带上CSRF token,可通过$this->security->get_csrf_hash()获取,放在请求头或参数里。
  • 数据验证:建议在插入前对数据进行验证,比如用CodeIgniter的form_validation类,避免无效数据插入数据库。
  • 批量插入替代:如果不需要严格逐行操作,可使用CI自带的insert_batch()方法,效率更高,只需传入所有行数据:$this->db->insert_batch('your_table_name', $rows_data);

内容的提问来源于stack exchange,提问作者Robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:05:02