Ryan

V2020-03-13

数据库查询中 is not null 和<>null是不等价的

下午修改Typecho主题想把首页文章过滤的功能集成到主题,高级查询其实很简单直接继承Widget_Abstract_Contents以及其子类都可以,重写一下select()方法就可以了。传过来的参数使用逗号隔开,explode函数分割就行。

class XMP_Post_Query extends Widget_Abstract_Contents {
    public function execute() {
        ...(省略部分代码)
        if (isset($this->parameter->excludeTemplate) && $this->parameter->excludeTemplate !== "") {
            $ext_arr = array_unique(explode(",", $this->parameter->excludeTemplate));
            foreach ($ext_arr as $ext) {
                $select = $select->where('table.contents.template <> ?', $ext);
            }
        }
    }
}

其中的关键语句$select = $select->where('table.contents.template <> ?', $ext);是我想当然写的,尝试了1个多小时,改来改去,我怀疑各种转义拼接导致问题,结果都不是。
没办法了,下载SQL Expert在数据库里操作把。

select title,type,template from typecho_contents where(type = 'post') and (template != 'post-note.php')
(结果是空的???)

那我再尝试一下template = null,还是空的。。。
数据库查询中 is not null 和<>null是不等价的
没办法,翻了一下数据库的书,原来要用is (not) null

您的大名:
万水千山总是情,给个打赏行不行。 打赏
文章出自:虾米皮皮乐 https://xiamp.net/archives/15.html,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
171
数据库查询中 is not null 和<>null是不等价的
03/13
date('Y'); ?>
下午修改Typecho主题想把首页文章过滤的功能集成到主题,高级查询其实很简单直接继承Widg...
扫描右侧二维码阅读全文

发表评论