96SEO 2026-09-07 09:10 1
在使用通达OA时TD类是主要数据库操作库。许多开发者在第一次接触时会遇到:
下面将从设计原理到实战案例。逐步拆解 TD 类,让你快速上手并避免常见痛点。怎么说呢,

TD 类位于 MYOA\webroot\inc\td.class.php是 OA 程序所有数据库访问的统一入口。
| 特点 | 说明 |
|---|---|
| 安全防护 | 自动进行 SQL 注入防护 |
| 连接管理 | 自动处理数据库连接和断开。简化代码 |
| 封装常用操作 | 提供 query / execute 等简洁接口 |
| 事务支持 | AOP 样式 begin/commit/rollback 调用方式友好 |
| 缓存集成 | Simplified Redis 接口,可直接调用 cache_* 方法缓存结果集或查询列表。不过, |
| 兼容性强 | PDO 与 mysqli 两种实现可选。默认使用 mysqli, |
| 易于
|
# 推荐:通过 alert.inc.php / auth.inc.php 自动加载
$ td = new TD;class TD {
public function __construct {
// ... init logic ...
}
}
再看注意。如果配置文件方法错误会导致实例化失败,记得检查 db_config.php 的绝对方法。老实说,
SQL 执行方法
-
.query – 执行返回结果集或 FALSE
php
$result = $ td -> query;参数:$sql string 或 prepared statement string `
再看返回值,成功返回 mysqli_result 对象;说起来,失败返回 FALSE。
-
.execute – 执行不需要返回结果
php
$ success = $ td -> execute;适用于 INSERT/UPDATE/DELETE。
-
.prepare – 内置预编译
php
$stmt = $ td -> prepare VALUES ");$stmt->bind_param;$stmt->execute;其实,预编译既能提高性能,又能彻底杜绝注入风险。
小贴士: 若发现频繁出现 “mysqli::query: Couldn't fetch mysqli” 错误。请检查是否在同一脚本中多次实例化
$ td=new TD,可以使用单例模式或全局共享实例。
结果集处理
-
.fetch_array – 获取关联数组
php $row=$ td->fetch_array;echo $row,
-
.fetch_row – 获取索引数组
php $row=$ td->fetch_row;其实,echo $row;老实说,
-
.fetch_object – 获取对象
php $obj=$ td->fetch_object;echo $obj->username;
-
.num_rows
再看获取记录数,`$count=$ td->num_rows;说起来,`
-
.free_result
资源。对大批量查询尤为关键:`$ td->free_result;`
*注意*: 当使用 prepare 时请通过 `$stmt->get_result` 获取结果集,再用上述 fetch 方法处理。
安全相关 API
-
.escape
转义字符串,防止注入:
php
$safe_str=$ td->escape;$sql ="SELECT * FROM user WHERE name='$safe_str'";
-
.sanitize_int/floatval
对数字输入做严格校验。
*警告*: 在任何拼接语句前务必先 escape 或 bind 参数,否则你会面临严重的注入风险。
事务处理
-
.begin
开启事务。按理说,`$ td->begin;`
-
.commit
提交成功 `.$ td->commit;其实,`
-
.rollback
回滚 `.$ td->rollback;`
再看示例,
try {
$ td -> begin;//扣减库存
$ sql1 = "UPDATE product SET stock=stock-?WHERE pid=,";$ stmt1 = $ td -> prepare;$ stmt1 -> bind_param;if ) throw new Exception;
//写订单日志
if VALUES ")) throw new Exception;说起来,$ td .commit;
} catch {
$ td .rollback;echo '操作失败:'.$ e -> getMessage;}
**关键**这方面。一定要在每个事务块结束后调用 commit 或 rollback,否则 MySQL 会自动回滚导致数据不一致。
缓存接口
-
.cache_get
从获取缓存来看,
$data=$ td cache_get;
-
.cache_set
说到设置缓存,
$ td cache_set;
默认过期时间为一小时可根据业务自行调整。`
-
.cache_delete
删除缓存键。
示例的观点是。
// 缓存使用者列表,一小时有效期
$key ="userlist";$userList =$ td cacheget;if{
// 查询数据库并组装数组
foreach as $row){
arraypush;}
// 写入 Redis
@$ td cacheset;}
// 使用缓存内容
printr;
从**提示**来看。如果你的业务对实时性要求极高,请不要把敏感状态信息放进缓存,而是仅缓存读操作频繁的数据,如商品目录、热门文章等。
"其他工具方法" 简要速查 快速上手必备!
方法名 功能描述 典型场景
insert_id
获取最近一次 INSERT 操作产生的自增 ID
新建使用者后立即读取其主键
affected_rows
统计 UPDATE/DELETE 操作影响的行数
批量删除时判断是否全部成功
getVersion
获取 MySQL 当前版本字符串
版本兼容判断
close
主动关闭链接
"四、TD类设计原理"
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback