我的知识记录

易优eyoucms程序 SQL数据查询标签使用指南

一、标签基础说明

  • 标签名称{eyou:sql}{/eyou:sql}
  • 作用:用于在模板中执行自定义的 MySQL 查询语句,获取数据库内容
  • 适用场景:标准标签无法满足需求时,可使用 SQL 标签灵活查询任意数据表内容
  • 缓存机制:支持数据缓存,提高性能,默认缓存时间为 25 小时(86400 秒)

二、使用语法


 
smarty
{eyou:sql sql='SELECT * FROM __PREFIX__table_name WHERE condition' cachetime='3600' empty='暂无数据'} {$field.字段名} {/eyou:sql}

三、属性说明

属性名 默认值 说明
sql - 需要执行的 SQL 查询语句。注意:表前缀请使用 __PREFIX__ 替代
cachetime 86400 数据缓存时间(单位为秒),设置为 -1 表示不缓存
empty - 查询结果为空时显示的提示文案
mod - 每隔 N 行输出的内容,常用于添加分隔符或样式类名
id field 自定义变量名,如 id='data' 后可通过 {$data.字段名} 调用

四、字段说明

  • 所有 SQL 查询返回的字段均可通过 {$field.字段名} 调用
  • 支持内置变量:
    • {$key}:当前记录索引(从 0 开始)
    • {$i}:当前记录顺序编号(从 1 开始)

五、使用示例

示例1:查询栏目信息


 
smarty
{eyou:sql sql='SELECT id,typename,dirname,litpic FROM __PREFIX__arctype WHERE id = 2' cachetime='-1'} {$field.typename} {/eyou:sql}
说明:查询栏目ID为2的数据,且关闭缓存。

示例2:输出索引与序号


 
smarty
{eyou:sql sql='SELECT id,typename,dirname,litpic FROM __PREFIX__arctype WHERE id = 2' cachetime='-1'} {$key} - {$i} {/eyou:sql}
效果

 
 
0 - 1 1 - 2 2 - 3 3 - 4 4 - 5

示例3:调用多个字段并格式化输出


 
smarty
{eyou:sql sql='SELECT id,typename,dirname FROM __PREFIX__arctype LIMIT 0,5'} <p>ID: {$field.id} | 栏目名: {$field.typename} | 目录名: {$field.dirname}</p> {/eyou:sql}
说明:展示栏目ID、栏目名称和目录名。

示例4:带条件查询 + 分页处理(伪分页)


 
smarty
{eyou:sql sql='SELECT id,title FROM __PREFIX__archives WHERE typeid = 3 LIMIT 0,10'} <a href="/view/{$field.id}.html">{$field.title}</a><br/> {/eyou:sql}
说明:查询栏目ID为3的文章列表,并生成链接。

示例5:结合变量名自定义(id属性)


 
smarty
{eyou:sql sql='SELECT id,title FROM __PREFIX__archives LIMIT 0,5' id='post'} <h3>{$post.title}</h3> <p>ID: {$post.id}</p> {/eyou:sql}
说明:将默认变量 field 替换为 post,更清晰表达数据含义。

六、注意事项

  • SQL 安全性:避免直接拼接用户输入,防止 SQL 注入攻击。
  • 性能优化:合理设置 cachetime 缓存时间,减少频繁查询数据库。
  • 字段别名:若字段名重复或冲突,建议使用 AS 设置别名。
  • 表前缀:统一使用 __PREFIX__ 替代实际表前缀,确保兼容性。
  • 错误调试:若 SQL 报错,请检查语法是否正确,推荐先在数据库客户端测试后再写入模板。

七、高级技巧

1. 动态传参(基于URL参数)


 
smarty
{eyou:sql sql="SELECT * FROM __PREFIX__archives WHERE typeid={$Get.typeid}"} ... {/eyou:sql}
说明:通过 URL 参数动态查询不同栏目的文章。

2. 多表联合查询


 
smarty
{eyou:sql sql='SELECT a.title, b.typename FROM __PREFIX__archives a LEFT JOIN __PREFIX__arctype b ON a.typeid = b.id WHERE a.id = 1'} 文章标题:{$field.title},所属栏目:{$field.typename} {/eyou:sql}
说明:实现跨表查询,获取文章及其所属栏目名称。

八、总结

{eyou:sql} 是一个非常强大的标签,适用于需要高度定制化的数据查询场景。虽然它提供了极大的灵活性,但也要求开发者具备一定的 SQL 基础和安全意识。合理使用该标签,可以显著提升模板开发效率和功能扩展性。
✅ 推荐优先使用系统内置标签,仅在必要时才使用 SQL 标签以保证系统的稳定性和安全性。

标签:

更新时间:2025-05-06 10:38:11

上一篇:易优eyoucms程序 友情链接调用指南

下一篇:易优eyoucms程序 应用插件(weapp)调用说明