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
相关产品推荐
相关产品推荐

