·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹📱AI全功能
×

00:00:00

您有一张10元限时体验卡,马上领取获得VIP尊享特权。

升级到X3.5后发现大量 异常sql

2023-03-08 09:52 来自 惧愁人 发布@ Discuz! X3.5专区

32034

如图所示,升级到X3.5后 发现大量的
DELETE FROM pre_common_tagitem WHERE  1 AND `itemid`='2934651
这样的sql,同时pre_common_tagitem表的数据量在急剧增加!


之前X3.4的时候未发现 这样的情况;

X3.4的时候,锁表严重
SELECT * FROM pre_common_tagitem WHERE  1 AND tagid IN ('2171','812','1008','1055','2061') AND `itemid`<>'1149775' AND idtype='tid' ORDER BY `itemid` DESC LIMIT 10 |
是这样的比较多 cpu压力大;

升级到X3.5后 变成
DELETE FROM pre_common_tagitem WHERE 1 AND `itemid`='2934651
这样的多了, 而且 pre_common_tagitem表的数据量在急剧增加;——大约 每秒 增加一条数据的样子


我有

新人帖 使用原生DELET语句无空格时无法删除数据的问题 New

2026-01-16 13:52 来自 浅生 发布@ Discuz! X3.5专区

1. 问题:



我使用DELETE语句删除数据的时候,如果引号内两侧不留空的时候,删除就不会执行,比如,下面这样就可以成功从数据库中删除:delpsqlf="DELETEFROMdatatable WHERE sid = sid";DB::query(delpsqlf);而下面这样,显示已执行,但数据库中的数据并未删除,数据库也无报错:delpsqlf="DELETEFROMdatatable WHERE sid = sid";DB::query(delpsqlf);


2. 千问的回答:



针对上述问题,我将discuz_database.php发给千问,给的结果为:


通过分析您提供的PHP类代码,我发现问题出在Discuz框架的SQL安全检查机制上。让我为您详细解释:


问题根源


问题主要出现在discuz_database_safecheck::checkquery()方法中,这个方法负责SQL语句的安全检查。关键代码如下:


$cmd = strtoupper(substr(trim($sql), 0, 3));if(isset(self::$checkc
最新热评 加载中...
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.208, 36.158.231.62,GMT+8, 2026-7-3 08:46 , Processed in 0.333658 second(s), 33 queries , Gzip On, Redis On.

Powered by Discuz! X5.1 Licensed

© 2001-2026 Discuz! Team.

关灯
扫一扫添加微信客服
QQ客服返回顶部
返回顶部