修复ecshop查询this sql May contain UPDATE,DELETE,TRUNCAT报错

2016-09-07 22:02 来源:www.chinab4c.com 作者:ecshop专家

市面上盛行的绝大部分ECSHOP模板,安装的时候都需要履行一段或几段SQL句子来修正数据结构或许初始化一些数据。
大多数ECSHOP管理员为了省劲,都会通过 “ECSHOP后台》数据库管理 》SQL查询” 来履行这些SQL句子。
这时问题就来了,当你粘贴进SQL句子,点“提交查询”时,体系就会报出下面的过错:
this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,REPLACE,SET,CREATE,CONCAT

如下图所示:

留意:

上述过错只要在打了ECSHOP2.7.3最新补丁的体系下才会呈现,如果您的ECSHOP体系没有打最新补丁,是不会呈现这个过错提示。

下面来说一下过错原因:
之所以会呈现上面的过错提示,是因为ECSHOP2.7.3最新补丁文件,对ECSHOP后台的“SQL查询”功能做了约束,
只允许履行 select 查询句子,除select以外的别的查询句子,比如 alter, update, delete, truncate等之类的SQL句子都是被制止履行的。
二)、
下面再来说一说解决方法:
翻开 admin/sql.php  找到下面这段代码,删掉即可

if(!empty($_POST['sql']))
{
preg_match_all("/(SELECT)/i", $_POST['sql'],$matches);
if(isset($matches[1]) && count($matches[1])>1)
{
sys_msg("this sql more than one SELECT ");
}
if(preg_match("/(UPDATE|DELETE|TRUNCATE|ALTER|DROP|FLUSH|INSERT|REPLACE|SET|CREATE|CONCAT)/i", $_POST['sql']))
{
sys_msg("this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,REPLACE,SET,CREATE,CONCAT ");

(责任编辑:chinab4c)