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

将基于Gijgo网格控件的.NET REST API转换为PHP实现

将.NET REST API转换为PHP实现(适配Gijgo网格控件)

我来帮你把这段适配Gijgo网格的.NET REST API转换成PHP版本,刚好PHP生态里用PDO就能安全高效地实现,下面是完整的转换方案:

原.NET代码回顾

先把你提供的.NET代码补全(根据Gijgo的分页逻辑推断完整逻辑),方便对照:

public JsonResult Get(int? page, int? limit) 
{ 
    List<Models.inventory> records; 
    int total; 
    using (ApplicationDbContext context = new ApplicationDbContext()) 
    { 
        var query = context.inventory.Select(p => new Models.inventory 
        { 
            id = p.id, 
            company = p.company, 
            part = p.part, 
            year = p.year, 
            model = p.model, 
            stock = p.stock 
        });

        // 获取总记录数
        total = query.Count();
        // 分页逻辑:跳过(page-1)*limit条,取limit条数据
        records = query.Skip((page.GetValueOrDefault(1)-1)*limit.GetValueOrDefault(10))
                      .Take(limit.GetValueOrDefault(10))
                      .ToList();
    }
    // 返回Gijgo网格要求的JSON格式
    return Json(new { total = total, records = records });
}

对应的PHP实现

下面是用PDO实现的PHP版本,完全匹配原.NET代码的逻辑,同时兼顾安全性和Gijgo的格式要求:

<?php
// 数据库连接配置,请根据你的实际环境修改
$dbHost = 'localhost';
$dbName = 'your_database_name';
$dbUser = 'your_db_username';
$dbPass = 'your_db_password';

try {
    // 初始化PDO数据库连接,设置UTF8编码和异常模式
    $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4", $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 获取分页参数,设置默认值:默认第1页,每页10条数据
    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    $limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
    $offset = ($page - 1) * $limit;

    // 1. 查询总记录数
    $totalStmt = $pdo->prepare("SELECT COUNT(*) FROM inventory");
    $totalStmt->execute();
    $total = $totalStmt->fetchColumn();

    // 2. 查询分页数据,使用预处理语句防止SQL注入
    $dataStmt = $pdo->prepare("
        SELECT id, company, part, year, model, stock 
        FROM inventory 
        LIMIT :limit OFFSET :offset
    ");
    $dataStmt->bindParam(':limit', $limit, PDO::PARAM_INT);
    $dataStmt->bindParam(':offset', $offset, PDO::PARAM_INT);
    $dataStmt->execute();
    $records = $dataStmt->fetchAll(PDO::FETCH_ASSOC);

    // 3. 返回符合Gijgo要求的JSON响应
    header('Content-Type: application/json');
    echo json_encode([
        'total' => $total,
        'records' => $records
    ]);

} catch(PDOException $e) {
    // 错误处理,生产环境可以调整为更友好的提示
    header('HTTP/1.1 500 Internal Server Error');
    echo json_encode(['error' => '数据库查询失败: ' . $e->getMessage()]);
}
?>

关键说明

  • 参数处理:通过$_GET获取分页参数,强制转换为整数并设置默认值,避免空参数导致逻辑错误
  • 安全防护:使用PDO预处理语句绑定参数,彻底避免SQL注入风险
  • 格式兼容:严格按照Gijgo网格的要求返回total(总记录数)和records(分页数据列表),确保前端能正确渲染
  • 错误处理:捕获数据库异常并返回标准的500错误响应,方便调试和问题排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:21:25