所以,这就是我的问题:我有一个查询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条件以便在不取消资源设置的情况下获取值?
答案 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能够很好地解释它。