php odbc结果令人不安

时间:2014-09-04 20:27:19

标签: php odbc

所以,这就是我的问题:我有一个查询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条件以便在不取消资源设置的情况下获取值?

2 个答案:

答案 0 :(得分:-1)

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

所以odbc_fetch_row()继续前进到下一行,直到最后一行。之后它返回false。

不幸的是,您无法将行指针移回第一条记录。

您需要再次查询DB

答案 1 :(得分:-1)

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

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

然后像这样循环它......

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

我在问题here中遇到了类似的问题,@Jeff Puckett能够很好地解释它。