首页/开发手册/万能SQL标签

开发手册

SoeayCMS 安装、标签使用与二次开发完整指南

万能SQL标签

万能SQL标签

万能SQL标签{soeay:sql}用于在模板中执行自定义SQL查询,功能强大但需谨慎使用。

安全提示:此标签存在安全风险,系统已自动禁用INSERT/UPDATE/DELETE/DROP等写操作。请勿在公开模板中暴露敏感查询。

基本语法

{soeay:sql sql="SELECT * FROM soeay_content WHERE scode=2 AND status=1 LIMIT 10"}
    <a href="[soeay:link]">[soeay:title]</a>
{/soeay:sql}

属性说明

  • sql:SQL查询语句,必填(仅支持SELECT查询)
  • num:最大返回条数,默认 100

可用变量

SQL查询结果中的所有字段均可通过[soeay:字段名]访问。

安全限制

  • 仅支持SELECT查询,自动过滤写操作
  • 自动检测并拒绝 INSERT/UPDATE/DELETE/DROP/ALTER/CREATE/TRUNCATE 等危险语句
  • 单查询最大返回1000条记录

使用场景

万能 SQL 标签适用于以下场景:

  • 需要跨表查询{soeay:list}无法满足的数据。
  • 需要读取扩展表或插件自定义表的内容。
  • 需要实现临时的、简单的统计或排行展示。

变量说明

变量说明
[soeay:字段名]SQL 查询结果中的任意字段名
[soeay:i] / [soeay:num]循环序号,从1开始

示例:读取指定栏目最新内容

{soeay:sql sql="SELECT c.id, c.title, c.ico, c.date, s.filename as sort_filename FROM soeay_content c LEFT JOIN soeay_content_sort s ON c.scode=s.scode WHERE c.status=1 AND c.acode='cn' ORDER BY c.date DESC LIMIT 5"}
    <div>
        <img src="[soeay:ico]" alt="[soeay:title]">
        <a href="/[soeay:sort_filename]/[soeay:id].html">[soeay:title]</a>
    </div>
{/soeay:sql}

注意事项

  • 仅 SELECT:系统自动拦截任何写入语句,即使拼接到 sql 参数中也不会执行。
  • 无 link 变量:与{soeay:list}不同,SQL 查询结果不会自动生成[soeay:link],如需链接请手动拼接 URL。
  • 字段名需与查询一致:模板中使用的[soeay:xxx]必须与 SELECT 语句中的字段名或别名一致。
  • 性能影响:复杂的 SQL 查询可能影响页面性能,建议避免在首页等高流量页面使用复杂查询。
  • 不要暴露后台表结构:切勿在公开模板中写出敏感表名或字段名,防止被恶意利用。