手动创建一个空的 PDO 记录集

Manually create an empty PDO recordset

我有一些页面,我在 table 中输出了一堆记录。有时,我有一种情况,我想表现得好像没有记录一样。有没有办法手动创建一个空的 PDO 记录集?创建与未返回任何记录的查询相同的结果?

我想对此的替代方法是我可以运行 的最小可能(空结果)查询,这是数据库上的最小负载。

使用 PHP 7 和 MySQL 5.6

(关于我以不同方式构建页面的建议,备选方案是使用 goto 跳过输出循环,或者将整个循环包装在一个巨大的 if() 语句中。我我知道这些替代路线。我只是想知道是否有现成的方法可以将空记录集简单地传递到我的 while( $r = $rs->fetch() ) 循环....)

我不知道您要做什么以及为什么要这样做。看起来您正在寻找 "dirty hack" 来绕过某些代码,而不是修改它。但是 - 在 PHP 7 中,您可以使用 fetch() 方法定义匿名 class,该方法将始终 return false:

$rs = new class() {
    public function fetch() {
        return false;
    }
};

while( $r = $rs->fetch() ) {
    echo "This shouldn't be printed.";
}

您必须了解,任何直接解决方案实际上都是 拐杖 支持最初不正确的体系结构。

在设计合理的 Web 应用程序中,数据库交互永远不会与输出有任何联系。首先,收集数据,然后处理数据,然后才开始输出。因此,将您的数据放入数组将是一个正确的解决方案。然后你可以用一个空数组来伪造一个空数组。

也就是说,你想要的直接由$rs = new PDOStatement();

完成