[Emlog优化]Emlog6.0标签不存在提示SQL执行错误的解决办法

发布日期:2020年4月22日 16:02 星期三

  • 正文内容
  • 相关推荐

近日,使用的Emlog最新版6.0,在发现访问不存在的TAG(标签)时候,出现了如下图的SQL报错页面,如何优化这个BUG,或者是修复这个错误呐?今天研究了下!

EMLOG标签出错_修复教程.jpg

一、分析问题

首先,找到文件“include\controller\tag_controller.php”,其文件内容如下

从标签名获取ID_优选资源网站长经验分享.jpg

关键就是在上图箭头所指的地方,报的SQL错误就是tid不对

定位到“include\model\tag_model.php”文件,第46行,代码如下:

 

function getTagByName($tagName) {
        $tagId = $this->getIdFromName($tagName);
        return $this->getTagById($tagId);
    }

 

在同文件内,定位到171行的函数getIdFromName():

 

/**
     * 从标签名查找标签ID
     * @param string $tagName 标签名
     * @return int|bool 标签ID | FALSE(未找到标签)
     */
    function getIdFromName($tagName){
        $sql = "SELECT `tid` FROM `" . DB_PREFIX . "tag` WHERE `tagname` = '" . $this->db->escape_string($tagName) . "'";
        $query = $this->db->query($sql);
 
        if ($this->db->num_rows($query) === 0) {
            return FALSE;
        }
 
        $result = $this->db->fetch_array($query);
        return $result['tid'];
    }

通过分析,当Tag名不存在的时候,此函数返回FALSE bool变量

那么变量$tagId就被赋值为bool值 FALSE,不是约定的tagID数值变量

所以问题就出在这里!

二、修复方法:

只需要把上述函数中10~12行做如下修改:

 

if ($this->db->num_rows($query) === 0) {
            header('HTTP/1.1 301 Moved Permanently');
            header('Location:/?keyword='.urlencode($tagName));
            exit(0);
        }

 

修改后如下图:

从标签名查找标签ID修复代码_优选资源网站长经验分享.jpg

就是做了一个301的跳转,跳转到关键词搜索页面,这样就可以避免用户出现的报错页面了,完美解决!还有更多的建站优化教程,大家可以看:

https://www.itql.cn/sort/jishu

趣乐分享-趣乐资源网
如有密码均为:www.itql.cn
学到东西应该懂得感恩作者 无脑喷子永封IP段+删帐号所有评论
本站资源软件和源码 文章大部分为网上收集,如侵犯您的权利,请告知管理员,我们会及时删除,并向您赔礼道歉.

站长QQ:209993299  

作者资料
描述: 90后草根站长!不忘初心,方得始终!

本文标签:

文章标题:[Emlog优化]Emlog6.0标签不存在提示SQL执行错误的解决办法

文章链接:https://www.itql.cn/post-3.html

版权声明:若无特殊注明,本文皆为《钱哆哆》原创,转载请保留文章出处。