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

PHP插入JSON数据到MySQL失败,请求技术协助

解决JSON数据插入MySQL数据库失败的问题

看起来你在把OPSkins API返回的JSON数据插入MySQL时遇到了问题,我帮你梳理下问题并给出完整的解决方案。

首先先明确你的目标JSON结构:

{ 
  "status": 1, 
  "response": { 
    "Aviator Goggles": { "price": 1009, "quantity": 269 }, 
    "Aviator Sunglasses": { "price": 460, "quantity": 187 }, 
    "BIKER CRATE": { "price": 29, "quantity": 3569 } 
  }, 
  "time": 1524852778 
}

核心需要插入的是response节点下的每一条商品数据,包含商品名称、价格、库存三个字段。

常见问题排查

  • 你提供的PHP代码不完整,可能没有正确完成JSON的获取、解析或遍历
  • 未处理API请求失败的情况(比如网络问题、API返回错误)
  • 未使用预处理语句,存在SQL注入风险同时可能导致插入失败
  • 数据库连接配置错误或表结构不匹配

完整解决方案代码

下面是经过完善的PHP代码,包含完整的JSON获取、解析、数据库插入逻辑,同时添加了错误处理:

<?php
// 1. 配置数据库连接信息
$dbHost = 'localhost';
$dbUser = 'your_username';
$dbPass = 'your_password';
$dbName = 'your_database';

// 2. 获取并解析JSON数据
$jsonUrl = "https://api.opskins.com/IPricing/GetAllLowestListPrices/v1/?appid=578080&format=json_pretty";
$jsonData = file_get_contents($jsonUrl);

// 检查是否成功获取数据
if (!$jsonData) {
    die("无法获取API数据,请检查网络连接或API地址");
}

// 解析JSON为关联数组
$decodedData = json_decode($jsonData, true);

// 检查JSON解析是否成功
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析失败:" . json_last_error_msg());
}

// 检查API返回状态是否正常
if ($decodedData['status'] !== 1) {
    die("API返回错误,状态码:" . $decodedData['status']);
}

// 3. 建立数据库连接
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);

// 检查数据库连接
if (!$conn) {
    die("数据库连接失败:" . mysqli_connect_error());
}

// 4. 遍历商品数据并插入数据库
// 建议先确保你的数据库表结构包含:item_name(文本类型)、price(整数/小数)、quantity(整数)
$insertSql = "INSERT INTO your_table_name (item_name, price, quantity) VALUES (?, ?, ?)";

// 使用预处理语句防止SQL注入并提高插入效率
$stmt = mysqli_prepare($conn, $insertSql);

if (!$stmt) {
    die("预处理语句创建失败:" . mysqli_error($conn));
}

// 绑定参数(s=字符串,i=整数)
mysqli_stmt_bind_param($stmt, "sii", $itemName, $price, $quantity);

// 遍历response中的每个商品
foreach ($decodedData['response'] as $itemName => $itemDetails) {
    $price = $itemDetails['price'];
    $quantity = $itemDetails['quantity'];
    
    // 执行插入
    if (!mysqli_stmt_execute($stmt)) {
        echo "插入商品 {$itemName} 失败:" . mysqli_stmt_error($stmt) . "<br>";
    } else {
        echo "商品 {$itemName} 插入成功<br>";
    }
}

// 关闭资源
mysqli_stmt_close($stmt);
mysqli_close($conn);
?>

额外注意事项

  1. 数据库表结构:确保你的表(your_table_name)存在对应的字段,比如:
    CREATE TABLE IF NOT EXISTS items (
        id INT AUTO_INCREMENT PRIMARY KEY,
        item_name VARCHAR(255) NOT NULL,
        price INT NOT NULL,
        quantity INT NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  2. API请求限制:OPSkins API可能有请求频率限制,频繁请求可能被封禁,建议添加请求间隔或缓存机制
  3. 错误日志:生产环境中不要直接输出错误信息,建议写入错误日志文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:11:54