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

PHP WebService如何实现从JSON数组批量插入多条数据到数据库

批量插入功能修改方案

1. 批量请求JSON结构示例

后续如果需要提交多条数据,直接传入JSON数组即可,原有单条JSON提交逻辑依然兼容:

[
    {
        "title":"covid today",
        "body":"this is body",
        "author":"m.ratt",
        "category_id":"50"
    },
    {
        "title":"new covid notice",
        "body":"this is second post body",
        "author":"l.john",
        "category_id":"52"
    }
]

2. 修改后完整PHP接口代码

$database = new Database();
$db = $database->connect();
$post = new Post($db);

// 读取并解析入参
$rawInput = file_get_contents("php://input");
$data = json_decode($rawInput);

// 校验JSON格式合法性
if (json_last_error() !== JSON_ERROR_NONE) {
    echo json_encode(
        array('message' => '非法JSON格式')
    );
    exit;
}

// 兼容单条/批量数据,统一转为数组处理
$postList = is_array($data) ? $data : [$data];
$successCount = 0;
$failCount = 0;

foreach ($postList as $item) {
    // 可选:增加必填字段校验,避免字段缺失导致插入异常
    if (!isset($item->title, $item->body, $item->author, $item->category_id)) {
        $failCount++;
        continue;
    }
    // 赋值属性
    $post->title = $item->title;
    $post->body = $item->body;
    $post->author = $item->author;
    $post->category_id = $item->category_id;
    // 调用原有插入方法
    if ($post->create()) {
        $successCount++;
    } else {
        $failCount++;
    }
}

// 返回批量操作结果
echo json_encode(
    array(
        'message' => '批量操作完成',
        '成功插入条数' => $successCount,
        '失败条数' => $failCount
    )
);

3. 优化说明

  • 完全兼容原有单条提交逻辑,旧的调用方不需要做任何调整即可继续使用
  • 增加了JSON格式校验和必填字段校验,降低异常报错概率
  • 无需修改原有Post类的create()方法,直接复用现有插入逻辑即可
  • 可选优化:如果担心循环赋值时属性残留,可每次循环都重新实例化Post类,或者在Post类中新增属性重置方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:45:03