升级到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表的数据量在急剧增加;——大约 每秒 增加一条数据的样子
我有
如图所示,升级到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
我使用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



