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

如何用单个函数替换模型中多个相似的查询函数?

合并重复数据库查询函数的解决方案

你可以通过将表名作为参数传入单个函数的方式,替换掉这些重复的函数,同时优化查询逻辑提升性能,具体实现如下:

优化后的单个函数

public function countSurat($tableName) {
    // 表名白名单验证,防止SQL注入风险
    $allowedTables = ['ts_300', 'ts_336_a', 'ts_336_b', 'ts_336_c'];
    if (!in_array($tableName, $allowedTables)) {
        return 0; // 也可根据业务需求抛出异常
    }

    // 使用COUNT(*)直接统计行数,比SELECT *再num_rows()更高效
    $query = $this->db->query("SELECT COUNT(*) FROM `{$tableName}` WHERE `status_surat` = '1'");
    return $query->row()->{'COUNT(*)'} ?? 0;
}

调用方式

原来的函数调用可以直接替换为:

  • 替代Surat_300():$this->countSurat('ts_300')
  • 替代Surat_336_a():$this->countSurat('ts_336_a')
  • 其他函数以此类推,传入对应的表名即可

优化亮点

  • 消除代码冗余:把重复的查询逻辑统一到一个函数中,后续新增类似需求只需添加白名单表名即可
  • 提升查询效率:直接用COUNT(*)让数据库完成统计,避免查询所有数据再计算行数的资源浪费
  • 增强安全性:通过白名单限制允许访问的表,避免传入恶意表名引发SQL注入攻击

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:16:08