赞片CMSSQL语句

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-08 09:30 ·2 浏览 ·0 回复

学完这篇,你能看懂赞片CMS(基于 ThinkPHP 内核的影视 CMS)的数据库结构,自己写出可用的 SQL 语句,并把查询、批量替换、数据清理这几类最常见的操作安全地跑完。

赞片CMS 的模板标签能满足大部分展示需求,但一旦遇到「全站换图片域名」「批量改分类」「查出某个演员的所有片子」这类活,标签就不好使了,最后还是得直接写 SQL。下面按顺序来。

第一步:确认表前缀和后台 SQL 入口

这一步的目的是拿到两个关键信息:你的数据库表前缀是什么,以及从哪儿执行语句。

先找表前缀。用 FTP 或宝塔面板打开网站根目录,进入 Application/Common/Conf/config.php,找到这一行:

'DB_PREFIX' => 'zanpian_',

单引号里的就是前缀。下面所有示例都按 zanpian_ 写,你的站如果是别的,全部替换掉。

再进后台执行语句。登录 /admin.php(部分版本是 /index.php/admin),点顶部菜单「系统」,左侧栏选「数据库管理」,再点「执行 SQL 语句」,里面有个多行文本框,语句写进去点「提交」即可。如果你用的是 phpMyAdmin(宝塔面板 → 数据库 → 管理),选好左侧对应的库,点顶部「SQL」标签,效果一样。

注意:phpMyAdmin 里执行前一定要先在左侧点中你的站点数据库,否则语句会跑到 information_schema 里去报错。

第二步:摸清表结构,别瞎猜字段名

这一步做完,你就知道数据存在哪张表、字段叫什么,后面写语句才有底气。

赞片CMS 的核心表通常是这几张:

  • zanpian_vod:影片主表,含 vod_id、vod_name、vod_pic、type_id、vod_status、vod_addtime 等
  • zanpian_vod_content:影片详情(剧情简介)
  • zanpian_vod_type:分类表,含 type_id、type_name、type_pid
  • zanpian_news:文章/资讯表
  • zanpian_star:演员表

查全部表:

SHOW TABLES LIKE 'zanpian_%';

查某张表的字段:

DESC zanpian_vod;

注意:不同版本的赞片CMS 字段名有差异,比如有的版本播放地址存在 vod_play_url(主表),有的单独拆到 zanpian_vod_playurl。动手前先 DESC 一遍,别照抄别人的教程。

第三步:写只读查询,先看结果再谈修改

这一步的目标是跑通一条 SELECT,确认能拿到你想要的数据。

按分类查最新 20 部影片:

SELECT vod_id, vod_name, vod_pic, vod_addtime
FROM zanpian_vod
WHERE type_id = 5 AND vod_status = 1
ORDER BY vod_id DESC
LIMIT 20;

带分类名的联表查询:

SELECT v.vod_id, v.vod_name, t.type_name
FROM zanpian_vod v
LEFT JOIN zanpian_vod_type t ON v.type_id = t.type_id
WHERE v.vod_status = 1
ORDER BY v.vod_id DESC
LIMIT 20;

按片名模糊搜:

SELECT vod_id, vod_name FROM zanpian_vod WHERE vod_name LIKE '%流浪%';

注意:影视站数据动辄几万几十万条,WHERE 后面没有索引字段(vod_id、type_id、vod_name)的全表扫描会很慢,后台可能直接超时白屏。加 LIMIT 是好习惯。

第四步:批量更新,先 SELECT 验证再 UPDATE

这一步做的是真正的写操作,也最容易出事。

比如全站换了图片 CDN 域名,要把 vod_pic 里的旧域名替换掉。先查有多少条会被改:

SELECT COUNT(*) FROM zanpian_vod WHERE vod_pic LIKE 'http://old.com/%';

确认数量对得上,再执行:

UPDATE zanpian_vod
SET vod_pic = REPLACE(vod_pic, 'http://old.com/', 'http://new.com/')
WHERE vod_pic LIKE 'http://old.com/%';

批量把某个分类下的影片全部下架:

UPDATE zanpian_vod SET vod_status = 0 WHERE type_id = 5;

注意:UPDATE 之前务必先备份。宝塔面板「数据库」→ 对应库 → 「备份」,或者后台「数据库管理」里的「备份数据库」。SQL 没有撤销键,UPDATE 漏写 WHERE 会把整张表刷成同一个值。同理,DELETE FROM zanpian_vod WHERE type_id = 5; 少个条件就是清库。

第五步:在模板里调用 SQL(可选)

如果你要在前台页面直接读数据,赞片CMS 模板支持 <php> 标签配合 ThinkPHP 的模型方法:

<php>
$list = M('vod')->query("SELECT vod_id,vod_name FROM zanpian_vod WHERE type_id=5 LIMIT 10");
</php>
<volist name="list" id="vo">
  <a href="{:zanpian_url('vod/read',array('id'=>$vo['vod_id']))}">{$vo.vod_name}</a>
</volist>

注意:模板里的 <php> 标签需要在后台「系统」→「基本设置」里确认模板 PHP 解析未被关闭。另外前台拼接 SQL 一定要对用户传入的参数做 intval() 处理,否则就是注入漏洞。

改完数据后,去后台「系统」→「更新缓存」点一下「清除缓存」,不然前台页面还是旧内容,你会以为 SQL 没生效。

小结

  • 表前缀在 Application/Common/Conf/config.php 的 DB_PREFIX 里,执行入口在后台「系统 → 数据库管理 → 执行 SQL 语句」或 phpMyAdmin。
  • 动手前先 SHOW TABLES 和 DESC 表名,赞片CMS 各版本字段有差异。
  • 查询必带 LIMIT,WHERE 尽量走索引字段,否则大表会超时。
  • 任何 UPDATE / DELETE 先跑一遍 SELECT 数数量,再全库备份。
  • 改完数据记得清缓存,模板里写 SQL 要对参数做整型过滤防注入。
版权声明:本文来自 GJ站长论坛《赞片CMSSQL语句》
原文链接:https://www.gj0.com/thread-871.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~