php-odbc结果取消设置


php odbc result unsetting

所以,我的问题是:我有一个查询sql并将其拉入资源的函数。在这个函数中,我运行:

 if (odbc_num_rows($rs) === 0) {
        return FALSE;
    } else {
        if ($type !== "Issues") {
            while (odbc_fetch_row($rs)) {
                $issues['tvi'][] = odbc_result($rs, 'TitleVolumeIssue_c_');
            }
        }
        return $rs;
    }

这正是它应该做的。然而,当我将$rs传递到下一个解析为html的方法中时,$rs似乎没有设置。奇怪的是,我可以调用odbc_num_rows($rs),它会给我正确的行数,但转储var显示它是错误的,我不能循环使用资源来获取任何值。

如何释放该资源以便在下一个函数中使用,或者如何重写IF条件以便在不取消设置资源的情况下获得值?

每次获取时,都会将数据库光标移到下一行。

所以odbc_fetch_row()一直到下一行,直到最后一行。之后返回false。

很遗憾,您无法将行指针移回第一条记录。

您将不得不再次查询您的DB

另一个选项是将odbc结果存储在一个数组中,您可以使用foreach循环该数组。这样可以保留数据,并且只需要查询一次而不是多次(在处理大量数据时会有所帮助)。

while($row = odbc_fetch_array($rs)) {
    $resultsArray[] = $row;
}

然后像这样循环。。。

foreach ($resultsArray as $key=>$value){
    //Do what you need to do...
}

我在这里的问题中也有类似的问题,@Jeff Puckett能够很好地解释。