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

PHP使用cURL发起GET请求获取API数据解析后存入MySQL的实现问题

完整实现方案

一、原有代码问题说明

你调用的测试接口返回的JSON结构中,所有用户数据都存放在根节点的data数组下,原有代码直接遍历根节点$decoded无法正确拿到用户字段。

二、完整可运行代码

<?php
// 1. 请求API获取数据
$ch = curl_init();
$url = "https://reqres.in/api/users?page=2";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 测试环境可临时关闭SSL验证,生产环境建议删除两行配置开启验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$resp = curl_exec($ch);
if($e = curl_error($ch)) {
    die("CURL请求错误:".$e);
}
curl_close($ch);
$decoded = json_decode($resp, true);
// 判断是否返回了有效用户数据
if(!isset($decoded['data']) || !is_array($decoded['data'])) {
    die("接口返回数据异常");
}
// 2. 连接MySQL数据库 替换为你自己的数据库配置
$dbHost = '127.0.0.1';
$dbName = '你的数据库名';
$dbUser = '你的数据库用户名';
$dbPass = '你的数据库密码';
$dbCharset = 'utf8mb4';
try {
    $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=$dbCharset", $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 预处理写入语句 假设你的表名叫users,字段对应id、email、first_name、last_name
    $stmt = $pdo->prepare("INSERT INTO users (id, email, first_name, last_name) VALUES (:id, :email, :first_name, :last_name) ON DUPLICATE KEY UPDATE email=VALUES(email), first_name=VALUES(first_name), last_name=VALUES(last_name)");
    // 3. 遍历用户数据写入数据库
    foreach($decoded['data'] as $user) {
        // 绑定参数执行写入
        $stmt->execute([
            ':id' => $user['id'],
            ':email' => $user['email'],
            ':first_name' => $user['first_name'],
            ':last_name' => $user['last_name']
        ]);
    }
    echo "数据写入成功,共写入".count($decoded['data'])."条用户数据";
} catch(PDOException $e) {
    die("数据库操作错误:".$e->getMessage());
}

三、注意事项

  • 请提前在MySQL中创建对应数据表,表结构参考:
CREATE TABLE `users` (
  `id` int(11) NOT NULL PRIMARY KEY,
  `email` varchar(255) NOT NULL DEFAULT '',
  `first_name` varchar(100) NOT NULL DEFAULT '',
  `last_name` varchar(100) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 代码中数据库配置、表名字段名请根据你的实际业务修改
  • 代码中使用了ON DUPLICATE KEY UPDATE逻辑,重复id的用户会自动更新字段,不需要该逻辑可以删除该部分内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:09:02