手动创建一个空的 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();
完成
我有一些页面,我在 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();